package Ġpl . net igen . core . rate us Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . google . android . play . core . review . Review ManagerFactory Ċ import Ġpl . net igen . core . main . Core MainActivity Ċ import Ġpl . net igen . core . utils . Utils Ċ import Ġpl . net igen . core api . main . Store Ċ import Ġpl . net igen . core api . rate us . IR ate Us Ċ import Ġtim ber . log . Tim ber Ċ Ċ /** Ċ Ġ* Ġ[ IR ate Us ] Ġimplementation Ċ Ġ* Ċ Ġ* Ġ@ property Ġapp Compat Activity Ġ[ AppCompatActivity ] Ġcontext Ġfor Ġthis Ġmodule Ċ Ġ*/ Ċ class ĠRate Us Ġprivate Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġapp Compat Activity : ĠAppCompatActivity , ĊĠĠĠ Ġprivate Ġval Ġshow Old Dialog : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġoverride Ġval ĠnumberOf Checks Before Showing Dialog : ĠInt Ġ= ĠNUMBER _ OF _ CHECKS _ BEFORE _ SHOW ING _ DIALOG Ċ ) Ġ: ĠI Rate Us Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSHARE D _ PREFER ENCES _ NAME Ġ= Ġ" Ġpl . net igen . rate us . Rate Us " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ NUMBER _ OF _ OPEN INGS Ġ= Ġ" KEY _ NUMBER _ OF _ OPEN INGS " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ IS _ RATE _ US _ OPEN Ġ= Ġ" KEY _ IS _ RATE _ US _ OPEN " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠNUMBER _ OF _ CHECKS _ BEFORE _ SHOW ING _ DIALOG Ġ= Ġ 4 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġshared Preferences : ĠSharedPreferences Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġapp Compat Activity . get SharedPreferences ( SHARED _ PREFER ENCES _ NAME , ĠContext . MODE _ PRIVATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġopening Counter ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġshared Preferences . getInt ( KEY _ NUMBER _ OF _ OPEN INGS , Ġ 0 ) ĊĊĠĠĠ Ġoverride Ġfun Ġincrease Opening Counter () Ġ= Ġshared Preferences . edit (). put Int ( KEY _ NUMBER _ OF _ OPEN INGS , Ġopening Counter Ġ+ Ġ 1 ). apply () ĊĠĠĠ Ġoverride Ġfun Ġshould Open Rate Us (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( app Compat Activity . support FragmentManager . is State Saved ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġshared Preferences . getBoolean ( KEY _ IS _ RATE _ US _ OPEN , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Not Show Rate Us Again () Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d (" () ") ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit (). put Boolean ( KEY _ IS _ RATE _ US _ OPEN , Ġfalse ). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġopen Rate Dialog IfNeeded (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( should Open Rate Us ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= Ġopening Counter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincrease Opening Counter () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( counter Ġ% ĠnumberOf Checks Before Showing Dialog Ġ== ĠnumberOf Checks Before Showing Dialog Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Rate Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġopen Rate Dialog () Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d (" () ") ĊĠĠĠĠĠĠĠ Ġif Ġ( show Old Dialog ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRate Fragment . newInstance ({ Ġclick Yes () Ġ}, Ġ{ Ġclick No () Ġ}, Ġ{ Ġclick Later () Ġ}). show ( app Compat Activity . support FragmentManager , Ġ" Rate Us Dialog ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload New Dialog () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload New Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= ĠReview ManagerFactory . create ( app Compat Activity ) ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġmanager . request Review Flow () ĊĠĠĠĠĠĠĠ Ġrequest . add On Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" task Ġ= Ġ[$ task ]") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Show ĠNew ĠRate ĠUs ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreview Info Ġ= Ġtask . result ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . launch Review Flow ( app Compat Activity , Ġreview Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclick Yes () Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Not Show Rate Us Again () ĊĠĠĠĠĠĠĠ ĠUtils . open Market Link ( app Compat Activity , Ġapp Compat Activity . packageName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclick No () Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Not Show Rate Us Again () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclick Later () Ġ= Ġshared Preferences . edit (). put Int ( KEY _ NUMBER _ OF _ OPEN INGS , Ġ 0 ). apply () ĊĊĠĠĠ Ġclass ĠBuilder ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcore MainActivity : ĠCore MainActivity , ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠnumberOf Checks Before Showing Dialog : ĠInt Ġ= ĠNUMBER _ OF _ CHECKS _ BEFORE _ SHOW ING _ DIALOG ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate Rate Us (): ĠRate Us Ġ= ĠRate Us ( core MainActivity , Ġcore MainActivity . core Main VM . store Ġ== ĠStore . H UA WE I , ĠnumberOf Checks Before Showing Dialog ) ĊĠĠĠ Ġ} Ċ }