171 lines
5.5 KiB
Lua
171 lines
5.5 KiB
Lua
local AccountManager = class("AccountManager", BaseModule)
|
|
|
|
function AccountManager:showBindUI()
|
|
UIManager:showUI("app/ui/game_setting/account_binding_ui")
|
|
end
|
|
|
|
function AccountManager:showDeleteUI(hideCloseBtn)
|
|
return UIManager:showUI("app/ui/game_setting/account_delete_ui", {hideCloseBtn = hideCloseBtn})
|
|
end
|
|
|
|
function AccountManager:getIsBinded()
|
|
local accountInfo = LocalData:getAccountInfo()
|
|
if accountInfo.google_id and accountInfo.google_id ~= "" then
|
|
return true
|
|
end
|
|
if accountInfo.apple_id and accountInfo.apple_id ~= "" then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
function AccountManager:deleteAccount()
|
|
self:sendMessage(ProtoMsgType.FromMsgEnum.DeleteReq, {}, {}, self.onDeleteAccount, BIReport.ITEM_GET_TYPE.NONE)
|
|
end
|
|
|
|
function AccountManager:onDeleteAccount(result)
|
|
if result.err_code == GConst.ERROR_STR.SUCCESS then -- 删除账号成功
|
|
local info = LocalData:getLastLoginInfo()
|
|
BIReport:postAccountDelete(info.type)
|
|
ModuleManager.LoginManager:goToLoginScene()
|
|
LocalData:saveBattleSnapshot({}) -- 清除
|
|
else
|
|
GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.DELETE_ACCOUNT_FAILED))
|
|
end
|
|
end
|
|
|
|
function AccountManager:bindAccount()
|
|
local loginType = SDKManager.BF_LOGIN_TYPE.GOOGLE
|
|
local loginTypeStr = NetManager.LOGIN_TYPE.GOOGLE
|
|
if Platform:isIosPlatform() then
|
|
loginType = SDKManager.BF_LOGIN_TYPE.APPLE
|
|
loginTypeStr = NetManager.LOGIN_TYPE.APPLE
|
|
end
|
|
|
|
BIReport:postAccountBindClick(loginTypeStr)
|
|
SDKManager:login(function(params)
|
|
if not params.token then
|
|
return
|
|
end
|
|
local args = {
|
|
type = SDKManager.LOGIN_TYPE[loginType],
|
|
id = params.id,
|
|
token = params.token
|
|
}
|
|
self:sendMessage(ProtoMsgType.FromMsgEnum.BindReq, args, {}, self.onBindAccount, BIReport.ITEM_GET_TYPE.NONE)
|
|
end, loginType)
|
|
end
|
|
|
|
function AccountManager:onBindAccount(result)
|
|
if result.status == 0 then
|
|
local accountInfo = LocalData:getAccountInfo()
|
|
local loginType = SDKManager.BF_LOGIN_TYPE.GOOGLE
|
|
local loginTypeStr = NetManager.LOGIN_TYPE.GOOGLE
|
|
if Platform:isIosPlatform() then
|
|
loginType = SDKManager.BF_LOGIN_TYPE.APPLE
|
|
loginTypeStr = NetManager.LOGIN_TYPE.APPLE
|
|
accountInfo.apple_id = result.reqData.id
|
|
else
|
|
accountInfo.google_id = result.reqData.id
|
|
end
|
|
LocalData:setLastLoginType(loginTypeStr)
|
|
LocalData:setAccountInfo(accountInfo)
|
|
LocalData:save()
|
|
|
|
BIReport:postAccountBindFinish(loginTypeStr, true)
|
|
GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.BIND_ACCOUNT_SUCCESS))
|
|
EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.BIND_ACCOUNT_SUCCESS)
|
|
else
|
|
local params = {
|
|
boxType = GConst.MESSAGE_BOX_TYPE.MB_OK,
|
|
okText = I18N:getGlobalText(I18N.GlobalConst.BTN_TEXT_OK),
|
|
}
|
|
if result.status == 13 then -- 重复绑定
|
|
params.content = I18N:getGlobalText(I18N.GlobalConst.ALREADY_BINDED_DESC)
|
|
else
|
|
params.content = I18N:getGlobalText(I18N.GlobalConst.BIND_ACCOUNT_FAILED)
|
|
end
|
|
GFunc.showMessageBox(params)
|
|
local loginTypeStr = NetManager.LOGIN_TYPE.GOOGLE
|
|
if Platform:isIosPlatform() then
|
|
loginTypeStr = NetManager.LOGIN_TYPE.APPLE
|
|
end
|
|
BIReport:postAccountBindFinish(loginTypeStr, false)
|
|
end
|
|
end
|
|
|
|
function AccountManager:changeAccount()
|
|
local loginType = SDKManager.BF_LOGIN_TYPE.GOOGLE
|
|
local loginTypeStr = NetManager.LOGIN_TYPE.GOOGLE
|
|
if Platform:isIosPlatform() then
|
|
loginType = SDKManager.BF_LOGIN_TYPE.APPLE
|
|
loginTypeStr = NetManager.LOGIN_TYPE.APPLE
|
|
end
|
|
|
|
BIReport:postAccountChangeClick(loginTypeStr)
|
|
SDKManager:login(function(params)
|
|
if not params.token then
|
|
return
|
|
end
|
|
local accountInfo = LocalData:getAccountInfo()
|
|
local bindId = nil
|
|
if Platform:isIosPlatform() then
|
|
bindId = accountInfo.apple_id
|
|
else
|
|
bindId = accountInfo.google_id
|
|
end
|
|
if bindId and bindId ~= "" and bindId == params.id then
|
|
local params = {
|
|
content = I18N:getGlobalText(I18N.GlobalConst.CHANGE_ACCOUNT_FAILED_2),
|
|
boxType = GConst.MESSAGE_BOX_TYPE.MB_OK,
|
|
okText = I18N:getGlobalText(I18N.GlobalConst.BTN_TEXT_OK),
|
|
}
|
|
GFunc.showMessageBox(params)
|
|
return
|
|
end
|
|
local args = {
|
|
type = SDKManager.LOGIN_TYPE[loginType],
|
|
id = params.id,
|
|
token = params.token
|
|
}
|
|
self:sendMessage(ProtoMsgType.FromMsgEnum.ExistReq, args, {}, self.onChangeAccount, BIReport.ITEM_GET_TYPE.NONE)
|
|
end, loginType)
|
|
end
|
|
|
|
function AccountManager:onChangeAccount(result)
|
|
if result.status == 0 then
|
|
local accountInfo = LocalData:getAccountInfo()
|
|
local loginType = SDKManager.BF_LOGIN_TYPE.GOOGLE
|
|
local loginTypeStr = NetManager.LOGIN_TYPE.GOOGLE
|
|
if Platform:isIosPlatform() then
|
|
loginType = SDKManager.BF_LOGIN_TYPE.APPLE
|
|
loginTypeStr = NetManager.LOGIN_TYPE.APPLE
|
|
accountInfo.apple_id = result.reqData.id
|
|
else
|
|
accountInfo.google_id = result.reqData.id
|
|
end
|
|
LocalData:setLastLoginInfo(loginTypeStr, result.reqData.id, result.reqData.token)
|
|
LocalData:setAccountInfo(accountInfo)
|
|
LocalData:save()
|
|
BIReport:postAccountChangeFinish(loginTypeStr, true)
|
|
ModuleManager.LoginManager:goToLoginScene()
|
|
else
|
|
local params = {
|
|
boxType = GConst.MESSAGE_BOX_TYPE.MB_OK,
|
|
okText = I18N:getGlobalText(I18N.GlobalConst.BTN_TEXT_OK),
|
|
}
|
|
if result.status == 14 then
|
|
params.content = I18N:getGlobalText(I18N.GlobalConst.ACCOUNT_EXCHANGE_DESC)
|
|
else
|
|
params.content = I18N:getGlobalText(I18N.GlobalConst.CHANGE_ACCOUNT_FAILED)
|
|
end
|
|
GFunc.showMessageBox(params)
|
|
local loginTypeStr = NetManager.LOGIN_TYPE.GOOGLE
|
|
if Platform:isIosPlatform() then
|
|
loginTypeStr = NetManager.LOGIN_TYPE.APPLE
|
|
end
|
|
BIReport:postAccountChangeFinish(loginTypeStr, false)
|
|
end
|
|
end
|
|
|
|
return AccountManager |