Files
basedbank/app/src/main/java/sh/sar/basedbank/util/ContactsCache.kt

146 lines
5.8 KiB
Kotlin

package sh.sar.basedbank.util
import android.content.Context
import org.json.JSONArray
import org.json.JSONObject
import sh.sar.basedbank.api.mib.MibBeneficiary
import sh.sar.basedbank.api.mib.MibBeneficiaryCategory
object ContactsCache {
private const val PREFS = "contacts_cache"
private const val KEY_CONTACTS = "mib_contacts"
private const val KEY_CATEGORIES = "mib_categories"
fun save(
context: Context,
contacts: List<MibBeneficiary>,
categories: List<MibBeneficiaryCategory>
) {
val prefs = context.getSharedPreferences(PREFS, Context.MODE_PRIVATE).edit()
val contactsArr = JSONArray()
for (c in contacts) {
contactsArr.put(JSONObject().apply {
put("benefNo", c.benefNo)
put("benefName", c.benefName)
put("benefNickName", c.benefNickName)
put("benefAccount", c.benefAccount)
put("benefType", c.benefType)
put("bankColor", c.bankColor)
put("benefBankName", c.benefBankName)
put("bankCode", c.bankCode)
put("benefStatus", c.benefStatus)
put("transferCyDesc", c.transferCyDesc)
put("customerImgHash", c.customerImgHash ?: "")
put("benefCategoryId", c.benefCategoryId)
put("profileId", c.profileId)
})
}
prefs.putString(KEY_CONTACTS, contactsArr.toString())
val catArr = JSONArray()
for (cat in categories) {
catArr.put(JSONObject().apply {
put("id", cat.id)
put("categoryName", cat.categoryName)
put("numBenef", cat.numBenef)
})
}
prefs.putString(KEY_CATEGORIES, catArr.toString())
prefs.apply()
}
fun loadContacts(context: Context): List<MibBeneficiary> {
val json = context.getSharedPreferences(PREFS, Context.MODE_PRIVATE)
.getString(KEY_CONTACTS, null) ?: return emptyList()
return try {
val arr = JSONArray(json)
(0 until arr.length()).map { i ->
val o = arr.getJSONObject(i)
MibBeneficiary(
benefNo = o.optString("benefNo"),
benefName = o.optString("benefName"),
benefNickName = o.optString("benefNickName"),
benefAccount = o.optString("benefAccount"),
benefType = o.optString("benefType"),
bankColor = o.optString("bankColor", "#888888"),
benefBankName = o.optString("benefBankName"),
bankCode = o.optString("bankCode"),
benefStatus = o.optString("benefStatus"),
transferCyDesc = o.optString("transferCyDesc", "MVR"),
customerImgHash = o.optString("customerImgHash").takeIf { it.isNotBlank() },
benefCategoryId = o.optString("benefCategoryId", "0"),
profileId = o.optString("profileId", "")
)
}
} catch (e: Exception) {
emptyList()
}
}
fun saveBml(context: Context, contacts: List<MibBeneficiary>) {
val arr = JSONArray()
for (c in contacts) {
arr.put(JSONObject().apply {
put("benefNo", c.benefNo)
put("benefName", c.benefName)
put("benefNickName", c.benefNickName)
put("benefAccount", c.benefAccount)
put("benefType", c.benefType)
put("bankColor", c.bankColor)
put("benefBankName", c.benefBankName)
put("bankCode", c.bankCode)
put("benefStatus", c.benefStatus)
put("transferCyDesc", c.transferCyDesc)
put("benefCategoryId", c.benefCategoryId)
})
}
context.getSharedPreferences(PREFS, Context.MODE_PRIVATE)
.edit().putString("bml_contacts", arr.toString()).apply()
}
fun loadBml(context: Context): List<MibBeneficiary> {
val json = context.getSharedPreferences(PREFS, Context.MODE_PRIVATE)
.getString("bml_contacts", null) ?: return emptyList()
return try {
val arr = JSONArray(json)
(0 until arr.length()).map { i ->
val o = arr.getJSONObject(i)
MibBeneficiary(
benefNo = o.optString("benefNo"),
benefName = o.optString("benefName"),
benefNickName = o.optString("benefNickName"),
benefAccount = o.optString("benefAccount"),
benefType = o.optString("benefType"),
bankColor = o.optString("bankColor", "#0066A1"),
benefBankName = o.optString("benefBankName"),
bankCode = o.optString("bankCode"),
benefStatus = o.optString("benefStatus"),
transferCyDesc = o.optString("transferCyDesc", "MVR"),
customerImgHash = null,
benefCategoryId = o.optString("benefCategoryId", "BML")
)
}
} catch (e: Exception) { emptyList() }
}
fun loadCategories(context: Context): List<MibBeneficiaryCategory> {
val json = context.getSharedPreferences(PREFS, Context.MODE_PRIVATE)
.getString(KEY_CATEGORIES, null) ?: return emptyList()
return try {
val arr = JSONArray(json)
(0 until arr.length()).map { i ->
val o = arr.getJSONObject(i)
MibBeneficiaryCategory(
id = o.optString("id"),
categoryName = o.optString("categoryName"),
numBenef = o.optInt("numBenef", 0)
)
}
} catch (e: Exception) {
emptyList()
}
}
}