package Ġio . github . fe elf re el inux . wy kop mob il ny . ui . widgets Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Uri Ċ import Ġandroid . support . constraint . Constraint Layout Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . View Ċ import Ġio . github . fe elf re el inux . wy kop mob il ny . R Ċ import Ġio . github . fe elf re el inux . wy kop mob il ny . api . entries . Typed InputStream Ċ import Ġio . github . fe elf re el inux . wy kop mob il ny . api . suggest . Suggest Api Ċ import Ġio . github . fe elf re el inux . wy kop mob il ny . ui . suggestions . Hash Tags Suggestions Adapter Ċ import Ġio . github . fe elf re el inux . wy kop mob il ny . ui . suggestions . Users Suggestions Adapter Ċ import Ġio . github . fe elf re el inux . wy kop mob il ny . ui . suggestions . W yk op Suggestions Tokenizer Ċ import Ġio . github . fe elf re el inux . wy kop mob il ny . ui . widgets . markdown _ toolbar . Markdown Toolbar Listener Ċ import Ġio . github . fe elf re el inux . wy kop mob il ny . utils . isVisible Ċ import Ġio . github . fe elf re el inux . wy kop mob il ny . utils . user manager . User Manager Api Ċ import Ġkotlinx . android . synt hetic . main . input _ toolbar . view .* ĊĊ Ċ interface ĠInput Toolbar Listener Ġ{ ĊĠĠĠ Ġfun Ġsend Photo ( photo Ġ: ĠTyped InputStream , Ġbody Ġ: ĠString , Ġcontains Ad ult Content : ĠBoolean ) ĊĠĠĠ Ġfun Ġsend Photo ( photo Ġ: ĠString ?, Ġbody Ġ: ĠString , Ġcontains Ad ult Content Ġ: ĠBoolean ) ĊĠĠĠ Ġfun Ġopen Gallery Image Chooser () Ċ } Ċ Ċ class ĠInput Toolbar Ġ: ĠConstraint Layout , ĠMarkdown Toolbar Listener Ġ{ ĊĠĠĠ Ġoverride Ġvar Ġselection Position : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġbody . selection Start ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ Ġbody . setSelection ( value ) Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġtext Body : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ Ġbody . text . toString () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ Ġbody . setText ( value ) Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġuser Manager Ġ: ĠUser Manager Api ĊĠĠĠ Ġlateinit Ġvar Ġsuggest Api Ġ: ĠSuggest Api ĊĠĠĠ Ġval Ġusers Suggestion Adapter Ġby Ġlazy Ġ{ ĠUsers Suggestions Adapter ( context , Ġsuggest Api ) Ġ} ĊĠĠĠ Ġval Ġhash Tags Suggestion Adapter Ġby Ġlazy Ġ{ ĠHash Tags Suggestions Adapter ( context , Ġsuggest Api ) Ġ} ĊĊĠĠĠ Ġvar Ġdefault Text Ġ= Ġ"" ĊĊĠĠĠ Ġoverride Ġfun Ġopen Gallery Image Chooser () Ġ{ ĊĠĠĠĠĠĠĠ Ġinput Toolbar Listener ?. open Gallery Image Chooser () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Photo ( photo Ġ: ĠUri ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġmarkdown Toolbar . photo Ġ= Ġphoto ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( context , Ġattrs , Ġdef Style Attr ) ĊĊĠĠĠ Ġvar Ġinput Toolbar Listener Ġ: ĠInput Toolbar Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtyped Value Ġ= ĠTyped Value () ĊĠĠĠĠĠĠĠ Ġval Ġtheme Ġ= Ġcontext . theme ĊĠĠĠĠĠĠĠ Ġtheme . resolve Attribute ( R . attr . card View Color , Ġtyped Value , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġset BackgroundColor ( typed Value . data ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġview ĊĠĠĠĠĠĠĠ ĠView . inflate ( context , ĠR . layout . input _ toolbar , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġmarkdown Toolbar . markdown Listener Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġmarkdown Toolbar . floating ImageView Ġ= Ġfloating ImageView ĊĊĠĠĠĠĠĠĠ Ġ// ĠSetup Ġlisteners ĊĠĠĠĠĠĠĠ Ġshow _ markdown _ menu . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Markdown Toolbar () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmarkdown _ close . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose Markdown Toolbar () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbody . setOn Focus ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_, Ġfocused Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( focused Ġ&& Ġ! has User Edited Content ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Body Ġ= Ġdefault Text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbody . set Tokenizer ( W yk op Suggestions Tokenizer ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( body . adapter Ġ! is ĠUsers Suggestions Adapter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody . setAdapter ( users Suggestion Adapter ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( body . adapter Ġ! is ĠHash Tags Suggestions Adapter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody . setAdapter ( hash Tags Suggestion Adapter ) ĊĠĠĠĠĠĠĠ Ġ})) ĊĠĠĠĠĠĠĠ Ġbody . threshold Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġsend . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtyped InputStream Ġ= Ġmarkdown Toolbar . get Photo Typed InputStream () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( typed InputStream Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Toolbar Listener ?. send Photo ( typed InputStream , Ġbody . text . toString (), Ġmarkdown Toolbar . contains Ad ult Content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Toolbar Listener ?. send Photo ( markdown Toolbar . photoUrl , Ġbody . text . toString (), Ġmarkdown Toolbar . contains Ad ult Content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsetup ( user Manager Api : ĠUser Manager Api , Ġsuggestion Api : ĠSuggest Api ) Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Manager Ġ= Ġuser Manager Api ĊĠĠĠĠĠĠĠ Ġsuggest Api Ġ= Ġsuggestion Api ĊĠĠĠĠĠĠĠ Ġshow () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Markdown Toolbar () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! has User Edited Content ()) Ġtext Body Ġ= Ġdefault Text ĊĠĠĠĠĠĠĠ Ġmarkdown Toolbar Holder . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġshow _ markdown _ menu . isVisible Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclose Markdown Toolbar () Ġ{ ĊĠĠĠĠĠĠĠ Ġmarkdown Toolbar Holder . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġshow _ markdown _ menu . isVisible Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Progress ( should Show Progress Ġ: ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠprogressBar . isVisible Ġ= Ġshould Show Progress ĊĠĠĠĠĠĠĠ Ġsend . isVisible Ġ= Ġ! should Show Progress ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset State () Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Body Ġ= Ġdefault Text ĊĠĠĠĠĠĠĠ Ġselection Position Ġ= Ġtext Body . length ĊĠĠĠĠĠĠĠ Ġmarkdown Toolbar . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Url Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontains Ad ult Content Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġclose Markdown Toolbar () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetDefault Address ant ( user Ġ: ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( user Manager . is User Authorized () Ġ&& Ġuser Manager . getUser Credentials () !!. login Ġ!= Ġuser ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Text Ġ= Ġ"@ $ user : Ġ" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Address ant ( user Ġ: ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdefault Text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġbody . request Focus () ĊĠĠĠĠĠĠĠ Ġtext Body Ġ+= Ġ"@ $ user : Ġ" ĊĠĠĠĠĠĠĠ Ġselection Position Ġ= Ġtext Body . length ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Custom Hint ( hint Ġ: ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbody . hint Ġ= Ġhint ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas User Edited Content () Ġ= Ġtext Body Ġ!= Ġdefault Text Ġ&& Ġmarkdown Toolbar . has User Edited Content () ĊĊĠĠĠ Ġfun Ġhide () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠOnly Ġshow Ġif Ġuser 's Ġlogged Ġin ĊĠĠĠĠĠĠĠ Ġis Visible Ġ= Ġuser Manager . is User Authorized () ĊĠĠĠ Ġ} Ċ }