/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 7 - present ĠRobert ĠJar os Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġio . k vision . cordova Ċ Ċ import Ġorg . w 3 c . dom . events . Event Ċ import Ġkotlinx . browser . document Ċ import Ġkotlin . coroutines . resume Ċ import Ġkotlin . coroutines . suspend Coroutine Ċ Ċ /** Ċ Ġ* ĠDevice Ġinformation Ġclass . Ċ Ġ*/ Ċ external Ġclass ĠDevice Ġ{ ĊĠĠĠ Ġval Ġcordova : ĠString ĊĠĠĠ Ġval Ġmodel : ĠString ĊĠĠĠ Ġval Ġplatform : ĠString ĊĠĠĠ Ġval Ġuuid : ĠString ĊĠĠĠ Ġval Ġversion : ĠString ĊĠĠĠ Ġval Ġmanufacturer : ĠString ĊĠĠĠ Ġval Ġis Virtual : ĠBoolean ĊĠĠĠ Ġval Ġserial : ĠString Ċ } Ċ Ċ /** Ċ Ġ* ĠPending Ġresult Ġclass . Ċ Ġ*/ Ċ external Ġclass ĠPending Result Ġ{ ĊĠĠĠ Ġval Ġplugin ServiceName : ĠString ĊĠĠĠ Ġval Ġplugin Status : ĠString ĊĠĠĠ Ġval Ġresult : Ġdynamic Ċ } Ċ Ċ /** Ċ Ġ* ĠResume Ġevent Ġclass . Ċ Ġ*/ Ċ external Ġclass ĠResume Event Ġ{ ĊĠĠĠ Ġval Ġaction : ĠString ? ĊĠĠĠ Ġval Ġpending Result : ĠPending Result ? Ċ } Ċ Ċ /** Ċ Ġ* ĠC ordova Ġevent Ġtypes . Ċ Ġ*/ Ċ enum Ġclass ĠC ordova Event ( internal Ġval Ġtype : ĠString ) Ġ{ ĊĠĠĠ ĠDEV IC ERE AD Y (" dev ic ere ady "), ĊĠĠĠ ĠPA USE (" pause "), ĊĠĠĠ ĠRES UME (" resume "), ĊĠĠĠ ĠBACK BUTTON (" back button "), ĊĠĠĠ ĠM EN UB UTTON (" men ub utton "), ĊĠĠĠ ĠSEARCH BUTTON (" search button "), ĊĠĠĠ ĠSTART CALL BUTTON (" start call button "), ĊĠĠĠ ĠEN DCALL BUTTON (" end call button "), ĊĠĠĠ ĠV OL UME DOWN BUTTON (" volume down button "), ĊĠĠĠ ĠV OL UME UP BUTTON (" volume up button "), ĊĠĠĠ ĠACT IV ATED (" activated ") Ċ } Ċ Ċ private Ġexternal Ġval Ġdevice : ĠDevice Ċ Ċ /** Ċ Ġ* ĠC ordova Ġdevice Ġinformation Ġobject . Ċ Ġ*/ Ċ var Ġcordova Device : ĠDevice ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġset Ċ Ċ /** Ċ Ġ* ĠAdd Ġlisteners Ġfor Ġ' dev ic ere ady ' ĠC ordova Ġevent . Ċ Ġ*/ Ċ fun Ġadd Device Ready Listener ( listener : Ġ( Device ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġdocument . addEventListener ( C ordova Event . DEV IC ERE AD Y . type , Ġ{ ĊĠĠĠĠĠĠĠ Ġlistener ( device ) ĊĠĠĠ Ġ}, Ġfalse ) Ċ } Ċ Ċ /** Ċ Ġ* ĠAdd Ġlisteners Ġfor Ġ' pause ' ĠC ordova Ġevent . Ċ Ġ*/ Ċ fun Ġadd Pause Listener ( listener : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġadd Device Ready Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġdocument . addEventListener ( C ordova Event . PAUSE . type , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener () ĊĠĠĠĠĠĠĠ Ġ}, Ġfalse ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠAdd Ġlisteners Ġfor Ġ' resume ' ĠC ordova Ġevent . Ċ Ġ*/ Ċ fun Ġadd Resume Listener ( listener : Ġ( Resume Event ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġadd Device Ready Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġdocument . addEventListener ( C ordova Event . RE SU ME . type , Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Unsafe Cast From Dynamic ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( e . as Dynamic ()) ĊĠĠĠĠĠĠĠ Ġ}, Ġfalse ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠAdd Ġlisteners Ġfor Ġa ĠC ordova Ġevents . Ċ Ġ*/ Ċ fun Ġadd C ordova EventListener ( event : ĠC ordova Event , Ġlistener : Ġ( Event ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġadd Device Ready Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġdocument . addEventListener ( event . type , Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( e ) ĊĠĠĠĠĠĠĠ Ġ}, Ġfalse ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠS us pending Ġfunction Ġto Ġreturn Ġdevice Ġinformation Ġobject . Ċ Ġ*/ Ċ suspend Ġfun Ġget Device (): ĠDevice Ġ{ ĊĠĠĠ Ġreturn Ġcordova Device Ġ?: Ġsuspend Coroutine Ġ{ Ġcontinuation Ġ-> ĊĠĠĠĠĠĠĠ Ġadd Device Ready Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcordova Device Ġ= Ġdevice ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontinuation . resume ( device ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ