// ĠCopyright Ġ 2 0 0 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġcom . intellij . space . vcs . review . details Ċ Ċ import Ġcirc let . client . api . Project Key Ċ import Ġcirc let . client . api . TD _ Member Profile Ċ import Ġcirc let . client . api . identifier Ċ import Ġcirc let . code . api .* Ċ import Ġcirc let . code . code Review Ċ import Ġcirc let . platform . api . Ref Ċ import Ġcirc let . platform . client . K Circ let Client Ċ import Ġcirc let . platform . client . property Ċ import Ġcirc let . platform . client . resolve Ċ import Ġcirc let . workspaces . Workspace Ċ import Ġlibraries . coroutines . extra . Lifetime Ċ import Ġruntime . reactive . Property Ċ import Ġruntime . reactive . cell Property Ċ import Ġruntime . reactive . live Ċ import Ġruntime . reactive . property . combine Latest Ċ Ċ internal Ġclass ĠSpace Review Participants Vm Impl ( ĊĠ Ġoverride Ġval Ġlifetime : ĠL ifetime , ĊĠ Ġprivate Ġval Ġproject Key : ĠProject Key , ĊĠ Ġval Ġreview : ĠRef < Code Review Record >, ĊĠ Ġparticipants Ref : ĠRef < Code Review Participants >, ĊĠ Ġprivate Ġval Ġpending Counter Ref : ĠRef < Code Review Pending Message Counter >, ĊĠ Ġprivate Ġval Ġreview Identifier : ĠReview Identifier , ĊĠ Ġprivate Ġval Ġworkspace : ĠWorkspace Ċ ) Ġ: ĠSpace Review Participants Vm Ġ{ ĊĠ Ġprivate Ġval Ġclient : ĠK Circ let Client Ġ= Ġworkspace . client ĊĊĠ Ġprivate Ġval Ġparticipants Ġ= Ġparticipants Ref . property () ĊĠ Ġoverride Ġval Ġcode Review Record : ĠCode Review Record Ġ= Ġreview . resolve () ĊĊĠ Ġoverride Ġval Ġauthors : ĠProperty < List < Code Review Participant >> Ġ= Ġcell Property Ġ{ ĊĠĠĠ Ġparticipants . live . participants ?. filter Ġ{ Ġit . role Ġ== ĠCode Review Participant Role . Author Ġ} Ġ?: Ġempty List () ĊĠ Ġ} ĊĊĠ Ġoverride Ġval Ġreviewers : ĠProperty < List < Code Review Participant >> Ġ= Ġcell Property Ġ{ ĊĠĠĠ Ġparticipants . live . participants ?. filter Ġ{ Ġit . role Ġ== ĠCode Review Participant Role . Reviewer Ġ} Ġ?: Ġempty List () ĊĠ Ġ} ĊĠ Ġoverride Ġval Ġme : ĠTD _ Member Profile ĊĠĠĠ Ġget () Ġ= Ġworkspace . me . value ĊĊĠ Ġoverride Ġval Ġcontrol Vm : ĠProperty < Participant State Control VM > Ġ= Ġcombine Latest ( ĊĠĠĠ Ġreview . property (), ĊĠĠĠ Ġreviewers , ĊĠĠĠ Ġauthors ) ĊĠ Ġ{ Ġreview Record , Ġreviewers , Ġauthors Ġ-> ĊĠĠĠ Ġif Ġ( review Record . state Ġ!= ĠCode Review State . Opened ) Ġreturn @ combine Latest ĠPart icipant State Control VM . Without Controls ĊĊĠĠĠ Ġcreate Control Vm ( review ers , Ġauthors , Ġreview Record ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcreate Control Vm ( review ers : ĠList < Code Review Participant >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauthors : ĠList < Code Review Participant >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreview Record : ĠCode Review Record ): ĠPart icipant State Control VM Ġ{ ĊĠĠĠ Ġval Ġme Reviewer Ġ= Ġreviewers . me () ĊĠĠĠ Ġval Ġme Author Ġ= Ġauthors . me () ĊĠĠĠ Ġval Ġis Turn Based Ġ= Ġreview Record . turn Based Ġ== Ġtrue ĊĊĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠ Ġme Reviewer Ġ!= Ġnull Ġ-> Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġme Reviewer . their Turn Ġ== Ġtrue Ġ&& Ġis Turn Based Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠPart icipant State Control VM . Reviewer Dropdown ( turn Based Ġ= Ġtrue , Ġpending Counter Ref ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ( me Reviewer . their Turn Ġ== Ġnull Ġ|| Ġ! is Turn Based ) Ġ&& Ġme Reviewer . reviewer State Ġ== Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠPart icipant State Control VM . Reviewer Dropdown ( turn Based Ġ= Ġfalse , Ġpending Counter Ref ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġme Reviewer . their Turn Ġ== Ġfalse Ġ&& Ġis Turn Based Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠPart icipant State Control VM . Reviewer Resume Review Button ( me Reviewer . state ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ( me Reviewer . their Turn Ġ== Ġnull Ġ|| Ġ! is Turn Based ) Ġ&& Ġme Reviewer . reviewer State Ġ!= Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠPart icipant State Control VM . Reviewer Resume Review Button ( me Reviewer . state ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠPart icipant State Control VM . Without Controls ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġme Author Ġ!= Ġnull Ġ-> Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġ! is Turn Based Ġ-> ĠPart icipant State Control VM . Without Controls ĊĠĠĠĠĠĠĠ Ġme Author . their Turn Ġ== Ġtrue Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠPart icipant State Control VM . Author End Turn Button ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcan Pass Turn Ġ= Ġ! review ers . all Ġ{ Ġit . reviewer State Ġ== ĠRe viewer State . Accepted Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcan Finish Review Ġ= Ġreviewers . any Ġ{ Ġit . reviewer State Ġ== ĠRe viewer State . Accepted Ġ} Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreviewers . none Ġ{ Ġit . reviewer State Ġ== Ġnull Ġ&& Ġit . their Turn Ġ== Ġfalse Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġme Author . their Turn Ġ== Ġfalse Ġ&& Ġreviewers . isNotEmpty () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠPart icipant State Control VM . Author Resume Review Button ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠPart icipant State Control VM . Without Controls ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġ-> Ġreturn ĠPart icipant State Control VM . Without Controls ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠList < Code Review Participant >. me () Ġ= Ġsingle OrNull Ġ{ Ġit . user . id Ġ== Ġme . id Ġ} ĊĊĠ Ġoverride Ġsuspend Ġfun Ġadd Reviewer ( profile : ĠTD _ Member Profile ) Ġ{ ĊĠĠĠ Ġclient . code Review . add Review Participant ( ĊĠĠĠĠĠ Ġproject Key . identifier , ĊĠĠĠĠĠ Ġreview Identifier , ĊĠĠĠĠĠ Ġprofile . identifier , ĊĠĠĠĠĠ ĠCode Review Participant Role . Reviewer ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġsuspend Ġfun Ġremove Reviewer ( profile : ĠTD _ Member Profile ) Ġ{ ĊĠĠĠ Ġclient . code Review . remove Review Participant ( ĊĠĠĠĠĠ Ġproject Key . identifier , ĊĠĠĠĠĠ Ġreview Identifier , ĊĠĠĠĠĠ Ġprofile . identifier , ĊĠĠĠĠĠ ĠCode Review Participant Role . Reviewer ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ } ĊĊ