package Ġcom . ly j . p instagram . view . main . dialogs . write Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġcom . ly j . core . extension . android . res String Ċ import Ġcom . ly j . core . module . size . Size Meas ur able Ċ import Ġcom . ly j . custom ui . dialog . edit text . ErrorMessage Ċ import Ġcom . ly j . custom ui . dialog . edit text . IsValid ated Ċ import Ġcom . ly j . custom ui . dialog . edit text . Validate Rule Ċ import Ġcom . ly j . domain . model . network . contents . Contents Tag Type Ċ import Ġcom . ly j . p instagram . R Ċ import Ġcom . ly j . domain . use case . android . location . Get Location UseCase Ċ import Ġcom . ly j . domain . use case . local . token . Find Token UseCase Ċ import Ġcom . ly j . domain . use case . network . contents . Request Create Contents UseCase Ċ import Ġcom . ly j . domain . use case . network . storage . Request Upload Storage UseCase Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠWrite Dialog ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġapplication : ĠApplication , ĊĠĠĠ Ġval Ġget Location UseCase : ĠGet Location UseCase , ĊĠĠĠ Ġval Ġcreate Contents UseCase : ĠRequest Create Contents UseCase , ĊĠĠĠ Ġval Ġfind Token UseCase : ĠFind Token UseCase , ĊĠĠĠ Ġval Ġupload Storage UseCase : ĠRequest Upload Storage UseCase , Ċ ) Ġ: ĠAndroid ViewModel ( application ), ĊĠĠĠ ĠSize Meas ur able { ĊĊĠĠĠ Ġoverride Ġval Ġcontext : ĠContext Ġby Ġlazy Ġ{ Ġget Application () Ġ} ĊĊĠĠĠ Ġval Ġtitle Rule : ĠList < Validate Rule > Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠValidate Rule ( res String ( R . string . validate _ message _ empty )) Ġ{ Ġit . isNotBlank () Ġ}, ĊĠĠĠĠĠĠĠ ĠValidate Rule ( res String ( R . string . validate _ message _ length )) Ġ{ Ġit . length Ġ>= Ġ 4 Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġdescription Rule : ĠList < Validate Rule > Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠValidate Rule ( res String ( R . string . validate _ message _ empty )) Ġ{ Ġit . isNotBlank () Ġ}, ĊĠĠĠĠĠĠĠ ĠValidate Rule ( res String ( R . string . validate _ message _ length )) Ġ{ Ġit . length Ġ>= Ġ 4 Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġspinner Items Ġ= ĠContents Tag Type . values () ĊĊĠĠĠ Ġvar Ġcurrent Asset : ĠWrite Request Asset ? Ġ= Ġnull Ċ } Ċ Ċ data Ġclass ĠWrite Request Asset ( ĊĠĠĠ Ġval Ġtitle : ĠPair < IsValid ated , ĠError Message ? >, ĊĠĠĠ Ġval Ġdescription : ĠPair < IsValid ated , ĠError Message ? >, ĊĠĠĠ Ġval Ġtag : ĠContents Tag Type , ĊĠĠĠ Ġval Ġuri : ĠUri Ċ )