package Ġcom . jak ew h art on . u 2 0 2 0 . ui . bug report Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . app . Share Compat . Intent Builder Ċ import Ġcom . app . missed notifications reminder . Build Config Ċ import Ġcom . jak ew h art on . u 2 0 2 0 . data . L umber Y ard Ċ import Ġcom . jak ew h art on . u 2 0 2 0 . ui . bug report . Bug Report Dialog . Report Listener Ċ import Ġcom . jak ew h art on . u 2 0 2 0 . util . Intent s Ċ import Ġcom . jak ew h art on . u 2 0 2 0 . util . Strings Ċ import Ġcom . mat tp rec ious . te lescope . Lens Ċ import Ġkotlinx . coroutines .* Ċ import Ġkotlinx . coroutines . flow . catch Ċ import Ġkotlinx . coroutines . flow . flow On Ċ import Ġkotlinx . coroutines . flow . launch In Ċ import Ġkotlinx . coroutines . flow . on Each Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠP ops Ġa Ġdialog Ġasking Ġfor Ġmore Ġinformation Ġabout Ġthe Ġbug Ġreport Ġand Ġthen Ġcreates Ġan Ġemail Ġwith Ġa Ċ Ġ* ĠJIRA - formatted Ġbody . Ċ Ġ*/ Ċ class ĠBug Report Lens ( private Ġval Ġcontext : ĠActivity , Ġprivate Ġval Ġl umber Y ard : ĠL umber Y ard ) Ġ: ĠLens (), ĠReport Listener Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġscreenshot : ĠFile ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun Ġon Capture ( screenshot : ĠFile ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . screenshot Ġ= Ġscreenshot ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠBug Report Dialog ( context ) ĊĠĠĠĠĠĠĠ Ġdialog . set Report Listener ( this ) ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bug Report Submit ( report : ĠBug Report View . Report ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( report . include Logs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġl umber Y ard . save () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flow On ( Dispatch ers . IO ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. catch Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Couldn 't Ġattach Ġthe Ġlogs .", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubmit Report ( report , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Each Ġ{ Ġsubmit Report ( report , Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. launch In ( Coroutine Scope ( Dispatch ers . Main )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubmit Report ( report , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubmit Report ( report : ĠBug Report View . Report , Ġlogs : ĠFile ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdm Ġ= Ġcontext . resources . display Metrics ĊĠĠĠĠĠĠĠ Ġval Ġdensity Bucket Ġ= Ġget Density String ( dm ) ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent Builder . from ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType (" message / rfc 8 2 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Email To (" http dispatch @ gmail . com ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Subject ( report . title ) ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġif Ġ(! Strings . isBlank ( report . description )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody . append ("{ panel : title = Description }\ n "). append ( report . description ). append ("\ n { panel }\ n \ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbody . append ("{ panel : title = App }\ n ") ĊĠĠĠĠĠĠĠ Ġbody . append (" Version : Ġ"). append ( Build Config . VERSION _ NAME ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġbody . append (" Version Ġcode : Ġ"). append ( Build Config . VERSION _ CODE ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġbody . append ("{ panel }\ n \ n ") ĊĠĠĠĠĠĠĠ Ġbody . append ("{ panel : title = Device }\ n ") ĊĠĠĠĠĠĠĠ Ġbody . append (" Make : Ġ"). append ( Build . MAN U FACT UR ER ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġbody . append (" Model : Ġ"). append ( Build . MODEL ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġbody . append (" Resolution : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( dm . height Pixels ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" x ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( dm . width Pixels ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ('\ n ') ĊĠĠĠĠĠĠĠ Ġbody . append (" Density : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( dm . density D pi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" dpi Ġ( ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ( density Bucket ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" )\ n ") ĊĠĠĠĠĠĠĠ Ġbody . append (" Release : Ġ"). append ( Build . VERSION . RELEASE ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġbody . append (" API : Ġ"). append ( Build . VERSION . SDK _ INT ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġbody . append ("{ panel }") ĊĠĠĠĠĠĠĠ Ġintent . setText ( body . toString ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( screenshot Ġ!= Ġnull Ġ&& Ġreport . include Screenshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . add Stream ( Uri . from File ( screenshot )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( logs Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . add Stream ( Uri . from File ( logs )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠInt ents . maybe Start Activity ( context , Ġintent . intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Density String ( display Metrics : ĠDisplay Metrics ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( display Metrics . density D pi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDisplay Metrics . D ENS ITY _ LOW Ġ-> Ġ" ld pi " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDisplay Metrics . D ENS ITY _ MEDIUM Ġ-> Ġ" md pi " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDisplay Metrics . D ENS ITY _ HIGH Ġ-> Ġ" hdpi " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDisplay Metrics . D ENS ITY _ X HIGH Ġ-> Ġ" x hdpi " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDisplay Metrics . D ENS ITY _ XX HIGH Ġ-> Ġ" xx hdpi " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDisplay Metrics . D ENS ITY _ XXX HIGH Ġ-> Ġ" xxx hdpi " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDisplay Metrics . D ENS ITY _ TV Ġ-> Ġ" tv dpi " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġdisplay Metrics . density D pi . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }