Kotlin高仿微信-第55篇-同步数据
实现代码:
/** * Author : wangning * Email : maoning20080809@163.com * Date : 2022/6/27 14:41 * Description : 同步信息 */ object SyncRepository { //第一次安装、或者卸载后安装,同步服务器信息 fun syncFirst (account : String, packageName : String, iCommonCallback: ICommonCallback) { var isFirstLogin = DataStoreUtils.get(DataStoreParams.User.DS_IS_FIRST_LOGIN, true) as Boolean //首次安装 if(!isFirstLogin){ return } CoroutineScope(Dispatchers.IO).launch { var result = ApiResult.create {SyncService.getApi().syncFirst(account, packageName)} if(result.isSuccess){ var data = result.data var syncFirstBean = Gson().fromJson(data, SyncFirstBean::class.java) syncFirstBean?.let { processBaseSystem(it.sync_base_system) processUserList(it.sync_user) processContactsList(it.sync_contacts) processChatList(it.sync_chat) processVipBean(it.sync_vip) //如果同步成功,设置登陆标识符 DataStoreUtils.put(DataStoreParams.User.DS_IS_FIRST_LOGIN, false) } iCommonCallback?.onSuccess(0) } else { iCommonCallback?.onFailure(0) } } } //每次进入主页面,要查询服务器重要数据 fun syncEnterMain(account: String){ syncVip(account) } //获取服务器vip信息 fun syncVip(account: String){ if(TextUtils.isEmpty(account)){ return } CoroutineScope(Dispatchers.IO).launch { var vipBean = VipManagerRepository.getVipLocal(account) if(vipBean != null && CommonUtils.Vip.isVip(vipBean)){ //如果还是vip,不需要加载。 return@launch } var result = VipManagerRepository.getVipServer(account) if(result.isSuccess){ var vipBean = Gson().fromJson(result.data, VipBean::class.java) VipManagerRepository.insertVipLocal(vipBean) } } } /** * 同步系统基本信息 */ private fun processBaseSystem(baseSystemBean: BaseSystemBean){ baseSystemBean?.let { BaseSystemRepository.insertBaseSystem(it) } } /** * 同步vip信息 */ private fun processVipBean(vipBean: VipBean){ vipBean?.let { VipManagerRepository.insertVipLocal(vipBean) } } /** * 同步账户信息 */ private fun processUserList(userListServer : ArrayList<UserBean>){ userListServer?.let { UserRepository.syncUserFirst(it) } } /** * 同步聊天信息 */ private fun processChatList(userListServer : ArrayList<ChatBean>){ userListServer?.let { ChatRepository.syncInsertChatListLocal(it) } } /** * 同步联系人 */ private fun processContactsList(contactsListServer : ArrayList<ContactsBean>){ contactsListServer?.let { ContactsRepository.syncInsertContactsListLocal(it) } } }
上一篇:
uniapp开发微信小程序-2.页面制作
下一篇:
vue小程序开发(二)项目搭建