mirror of
https://github.com/wahyd4/Yep.git
synced 2026-08-19 01:36:18 +10:00
refactor sync use updateUserWithUserID(_:useUserInfo:)
This commit is contained in:
@@ -194,68 +194,10 @@ func syncMyInfoAndDoFurtherAction(furtherAction: () -> Void) {
|
||||
}
|
||||
|
||||
if let user = me {
|
||||
realm.beginWrite()
|
||||
|
||||
// 更新用户信息
|
||||
|
||||
if let lastSignInUnixTime = friendInfo["last_sign_in_at"] as? NSTimeInterval {
|
||||
user.lastSignInUnixTime = lastSignInUnixTime
|
||||
}
|
||||
|
||||
if let nickname = friendInfo["nickname"] as? String {
|
||||
user.nickname = nickname
|
||||
}
|
||||
|
||||
if let introduction = friendInfo["introduction"] as? String {
|
||||
user.introduction = introduction
|
||||
}
|
||||
|
||||
if let avatarURLString = friendInfo["avatar_url"] as? String {
|
||||
user.avatarURLString = avatarURLString
|
||||
}
|
||||
|
||||
if let longitude = friendInfo["longitude"] as? Double {
|
||||
user.longitude = longitude
|
||||
}
|
||||
|
||||
if let latitude = friendInfo["latitude"] as? Double {
|
||||
user.latitude = latitude
|
||||
}
|
||||
|
||||
if let badge = friendInfo["badge"] as? String {
|
||||
user.badge = badge
|
||||
}
|
||||
|
||||
// 更新技能
|
||||
|
||||
if let learningSkillsData = friendInfo["learning_skills"] as? [JSONDictionary] {
|
||||
user.learningSkills.removeAll()
|
||||
let userSkills = userSkillsFromSkillsData(learningSkillsData, inRealm: realm)
|
||||
user.learningSkills.extend(userSkills)
|
||||
}
|
||||
|
||||
if let masterSkillsData = friendInfo["master_skills"] as? [JSONDictionary] {
|
||||
user.masterSkills.removeAll()
|
||||
let userSkills = userSkillsFromSkillsData(masterSkillsData, inRealm: realm)
|
||||
user.masterSkills.extend(userSkills)
|
||||
}
|
||||
|
||||
// 更新 Social Account Provider
|
||||
|
||||
user.socialAccountProviders.removeAll()
|
||||
|
||||
if let providersInfo = friendInfo["providers"] as? [String: Bool] {
|
||||
for (name, enabled) in providersInfo {
|
||||
let provider = UserSocialAccountProvider()
|
||||
provider.name = name
|
||||
provider.enabled = enabled
|
||||
|
||||
user.socialAccountProviders.append(provider)
|
||||
}
|
||||
}
|
||||
|
||||
realm.commitWrite()
|
||||
|
||||
updateUserWithUserID(user.userID, useUserInfo: friendInfo)
|
||||
|
||||
// 更新 DoNotDisturb
|
||||
|
||||
@@ -430,82 +372,27 @@ func syncFriendshipsAndDoFurtherAction(furtherAction: () -> Void) {
|
||||
}
|
||||
|
||||
if let user = user {
|
||||
realm.beginWrite()
|
||||
|
||||
// 更新用户信息
|
||||
|
||||
if let lastSignInUnixTime = friendInfo["last_sign_in_at"] as? NSTimeInterval {
|
||||
user.lastSignInUnixTime = lastSignInUnixTime
|
||||
}
|
||||
updateUserWithUserID(user.userID, useUserInfo: friendInfo)
|
||||
|
||||
if let nickname = friendInfo["nickname"] as? String {
|
||||
user.nickname = nickname
|
||||
}
|
||||
realm.write {
|
||||
|
||||
if let introduction = friendInfo["introduction"] as? String {
|
||||
user.introduction = introduction
|
||||
}
|
||||
if let friendshipID = friendshipInfo["id"] as? String {
|
||||
user.friendshipID = friendshipID
|
||||
}
|
||||
|
||||
if let avatarURLString = friendInfo["avatar_url"] as? String {
|
||||
user.avatarURLString = avatarURLString
|
||||
}
|
||||
user.friendState = UserFriendState.Normal.rawValue
|
||||
|
||||
if let longitude = friendInfo["longitude"] as? Double {
|
||||
user.longitude = longitude
|
||||
}
|
||||
|
||||
if let latitude = friendInfo["latitude"] as? Double {
|
||||
user.latitude = latitude
|
||||
}
|
||||
|
||||
if let badge = friendInfo["badge"] as? String {
|
||||
user.badge = badge
|
||||
}
|
||||
|
||||
if let friendshipID = friendshipInfo["id"] as? String {
|
||||
user.friendshipID = friendshipID
|
||||
}
|
||||
|
||||
user.friendState = UserFriendState.Normal.rawValue
|
||||
|
||||
if let isBestfriend = friendInfo["favored"] as? Bool {
|
||||
user.isBestfriend = isBestfriend
|
||||
}
|
||||
|
||||
if let bestfriendIndex = friendInfo["favored_position"] as? Int {
|
||||
user.bestfriendIndex = bestfriendIndex
|
||||
}
|
||||
|
||||
|
||||
// 更新技能
|
||||
|
||||
if let learningSkillsData = friendInfo["learning_skills"] as? [JSONDictionary] {
|
||||
user.learningSkills.removeAll()
|
||||
let userSkills = userSkillsFromSkillsData(learningSkillsData, inRealm: realm)
|
||||
user.learningSkills.extend(userSkills)
|
||||
}
|
||||
|
||||
if let masterSkillsData = friendInfo["master_skills"] as? [JSONDictionary] {
|
||||
user.masterSkills.removeAll()
|
||||
let userSkills = userSkillsFromSkillsData(masterSkillsData, inRealm: realm)
|
||||
user.masterSkills.extend(userSkills)
|
||||
}
|
||||
|
||||
// 更新 Social Account Provider
|
||||
|
||||
user.socialAccountProviders.removeAll()
|
||||
|
||||
if let providersInfo = friendInfo["providers"] as? [String: Bool] {
|
||||
for (name, enabled) in providersInfo {
|
||||
let provider = UserSocialAccountProvider()
|
||||
provider.name = name
|
||||
provider.enabled = enabled
|
||||
|
||||
user.socialAccountProviders.append(provider)
|
||||
if let isBestfriend = friendInfo["favored"] as? Bool {
|
||||
user.isBestfriend = isBestfriend
|
||||
}
|
||||
|
||||
if let bestfriendIndex = friendInfo["favored_position"] as? Int {
|
||||
user.bestfriendIndex = bestfriendIndex
|
||||
}
|
||||
}
|
||||
|
||||
realm.commitWrite()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -631,69 +518,14 @@ private func syncGroupWithGroupInfo(groupInfo: JSONDictionary, inRealm realm: Re
|
||||
}
|
||||
|
||||
if let owner = owner {
|
||||
realm.beginWrite()
|
||||
|
||||
// 更新个人信息
|
||||
|
||||
if let lastSignInUnixTime = ownerInfo["last_sign_in_at"] as? NSTimeInterval {
|
||||
owner.lastSignInUnixTime = lastSignInUnixTime
|
||||
updateUserWithUserID(owner.userID, useUserInfo: ownerInfo)
|
||||
|
||||
realm.write {
|
||||
group.owner = owner
|
||||
}
|
||||
|
||||
if let nickname = ownerInfo["nickname"] as? String {
|
||||
owner.nickname = nickname
|
||||
}
|
||||
|
||||
if let introduction = ownerInfo["introduction"] as? String {
|
||||
owner.introduction = introduction
|
||||
}
|
||||
|
||||
if let avatarURLString = ownerInfo["avatar_url"] as? String {
|
||||
owner.avatarURLString = avatarURLString
|
||||
}
|
||||
|
||||
if let longitude = ownerInfo["longitude"] as? Double {
|
||||
owner.longitude = longitude
|
||||
}
|
||||
|
||||
if let latitude = ownerInfo["latitude"] as? Double {
|
||||
owner.latitude = latitude
|
||||
}
|
||||
|
||||
if let badge = ownerInfo["badge"] as? String {
|
||||
owner.badge = badge
|
||||
}
|
||||
|
||||
// 更新技能
|
||||
|
||||
if let learningSkillsData = ownerInfo["learning_skills"] as? [JSONDictionary] {
|
||||
owner.learningSkills.removeAll()
|
||||
let userSkills = userSkillsFromSkillsData(learningSkillsData, inRealm: realm)
|
||||
owner.learningSkills.extend(userSkills)
|
||||
}
|
||||
|
||||
if let masterSkillsData = ownerInfo["master_skills"] as? [JSONDictionary] {
|
||||
owner.masterSkills.removeAll()
|
||||
let userSkills = userSkillsFromSkillsData(masterSkillsData, inRealm: realm)
|
||||
owner.masterSkills.extend(userSkills)
|
||||
}
|
||||
|
||||
// 更新 Social Account Provider
|
||||
|
||||
owner.socialAccountProviders.removeAll()
|
||||
|
||||
if let providersInfo = ownerInfo["providers"] as? [String: Bool] {
|
||||
for (name, enabled) in providersInfo {
|
||||
let provider = UserSocialAccountProvider()
|
||||
provider.name = name
|
||||
provider.enabled = enabled
|
||||
|
||||
owner.socialAccountProviders.append(provider)
|
||||
}
|
||||
}
|
||||
|
||||
group.owner = owner
|
||||
|
||||
realm.commitWrite()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -722,7 +554,9 @@ private func syncGroupWithGroupInfo(groupInfo: JSONDictionary, inRealm realm: Re
|
||||
// 加上本地没有的 member
|
||||
|
||||
for memberInfo in remoteMembers {
|
||||
|
||||
if let memberID = memberInfo["id"] as? String {
|
||||
|
||||
var member = userWithUserID(memberID, inRealm: realm)
|
||||
|
||||
if member == nil {
|
||||
@@ -755,75 +589,17 @@ private func syncGroupWithGroupInfo(groupInfo: JSONDictionary, inRealm realm: Re
|
||||
|
||||
if let member = member {
|
||||
|
||||
realm.beginWrite()
|
||||
|
||||
// 更新个人信息
|
||||
|
||||
if let lastSignInUnixTime = memberInfo["last_sign_in_at"] as? NSTimeInterval {
|
||||
member.lastSignInUnixTime = lastSignInUnixTime
|
||||
}
|
||||
|
||||
if let nickname = memberInfo["nickname"] as? String {
|
||||
member.nickname = nickname
|
||||
}
|
||||
|
||||
if let introduction = memberInfo["introduction"] as? String {
|
||||
member.introduction = introduction
|
||||
}
|
||||
|
||||
if let avatarURLString = memberInfo["avatar_url"] as? String {
|
||||
member.avatarURLString = avatarURLString
|
||||
}
|
||||
|
||||
if let longitude = memberInfo["longitude"] as? Double {
|
||||
member.longitude = longitude
|
||||
}
|
||||
|
||||
if let latitude = memberInfo["latitude"] as? Double {
|
||||
member.latitude = latitude
|
||||
}
|
||||
|
||||
if let badge = memberInfo["badge"] as? String {
|
||||
member.badge = badge
|
||||
}
|
||||
|
||||
// 更新技能
|
||||
|
||||
if let learningSkillsData = memberInfo["learning_skills"] as? [JSONDictionary] {
|
||||
member.learningSkills.removeAll()
|
||||
let userSkills = userSkillsFromSkillsData(learningSkillsData, inRealm: realm)
|
||||
member.learningSkills.extend(userSkills)
|
||||
}
|
||||
|
||||
if let masterSkillsData = memberInfo["master_skills"] as? [JSONDictionary] {
|
||||
member.masterSkills.removeAll()
|
||||
let userSkills = userSkillsFromSkillsData(masterSkillsData, inRealm: realm)
|
||||
member.masterSkills.extend(userSkills)
|
||||
}
|
||||
|
||||
// 更新 Social Account Provider
|
||||
|
||||
member.socialAccountProviders.removeAll()
|
||||
|
||||
if let providersInfo = memberInfo["providers"] as? [String: Bool] {
|
||||
for (name, enabled) in providersInfo {
|
||||
let provider = UserSocialAccountProvider()
|
||||
provider.name = name
|
||||
provider.enabled = enabled
|
||||
|
||||
member.socialAccountProviders.append(provider)
|
||||
}
|
||||
}
|
||||
|
||||
realm.commitWrite()
|
||||
updateUserWithUserID(member.userID, useUserInfo: memberInfo)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
realm.beginWrite()
|
||||
group.members.removeAll()
|
||||
group.members.extend(localMembers)
|
||||
realm.commitWrite()
|
||||
realm.write {
|
||||
group.members.removeAll()
|
||||
group.members.extend(localMembers)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1024,20 +800,8 @@ func syncMessageWithMessageInfo(messageInfo: JSONDictionary, inRealm realm: Real
|
||||
}
|
||||
|
||||
if let sender = sender {
|
||||
realm.beginWrite()
|
||||
|
||||
if let nickname = senderInfo["nickname"] as? String {
|
||||
sender.nickname = nickname
|
||||
}
|
||||
|
||||
if let avatarURLString = senderInfo["avatar_url"] as? String {
|
||||
sender.avatarURLString = avatarURLString
|
||||
}
|
||||
|
||||
message.fromFriend = sender
|
||||
|
||||
realm.commitWrite()
|
||||
|
||||
updateUserWithUserID(sender.userID, useUserInfo: senderInfo)
|
||||
|
||||
// 查询消息来自的 Group,为空就表示来自 User
|
||||
|
||||
@@ -1099,6 +863,7 @@ func syncMessageWithMessageInfo(messageInfo: JSONDictionary, inRealm realm: Real
|
||||
}
|
||||
|
||||
// 在保证有 Conversation 的情况下继续,不然消息没有必要保留
|
||||
|
||||
if let conversation = conversation {
|
||||
realm.beginWrite()
|
||||
|
||||
@@ -1118,10 +883,8 @@ func syncMessageWithMessageInfo(messageInfo: JSONDictionary, inRealm realm: Real
|
||||
|
||||
recordMessageWithMessageID(messageID, detailInfo: messageInfo, inRealm: realm)
|
||||
|
||||
|
||||
// Do furtherAction after sync
|
||||
|
||||
//println("syncMessageWithMessageInfo do furtherAction")
|
||||
if let sectionDateMessageID = sectionDateMessageID{
|
||||
furtherAction?(messageIDs: [sectionDateMessageID, messageID])
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user