1 package abi47_0_0.expo.modules.errorrecovery
2 
3 import android.content.Context
4 import android.content.SharedPreferences
5 
6 import abi47_0_0.expo.modules.core.ExportedModule
7 import abi47_0_0.expo.modules.core.Promise
8 import abi47_0_0.expo.modules.core.interfaces.ExpoMethod
9 
10 const val RECOVERY_STORE = "expo.modules.errorrecovery.store"
11 private const val RECOVERY_STORE_KEY = "recoveredProps"
12 
13 open class ErrorRecoveryModule(context: Context) : ExportedModule(context) {
14   protected open val mSharedPreferences: SharedPreferences = context.applicationContext.getSharedPreferences(RECOVERY_STORE, Context.MODE_PRIVATE)
15 
getNamenull16   override fun getName(): String = "ExpoErrorRecovery"
17 
18   @ExpoMethod
19   fun saveRecoveryProps(props: String?, promise: Promise) {
20     props?.let {
21       setRecoveryProps(it)
22     }
23     promise.resolve(null)
24   }
25 
getConstantsnull26   override fun getConstants(): Map<String, Any?> {
27     return mapOf(RECOVERY_STORE_KEY to consumeRecoveryProps())
28   }
29 
setRecoveryPropsnull30   protected open fun setRecoveryProps(props: String) {
31     mSharedPreferences.edit().putString(RECOVERY_STORE_KEY, props).commit()
32   }
33 
consumeRecoveryPropsnull34   protected open fun consumeRecoveryProps(): String? {
35     return mSharedPreferences.getString(RECOVERY_STORE_KEY, null)?.let {
36       mSharedPreferences.edit().remove(RECOVERY_STORE_KEY).commit()
37       it
38     }
39   }
40 }
41