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