Kotlin高仿微信-第55篇-同步数据

  Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。

Kotlin高仿微信-项目实践58篇,点击查看详情

效果图:后台同步数据,没有效果图

实现代码:

/**
 * 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)
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六毛六66

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值