From e858d35722c766132ac4fa7415d1b5fc27d44c98 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Wed, 7 Jan 2026 15:45:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A6=96=E9=A1=B5pop?= =?UTF-8?q?=E5=AF=B9=E9=92=A9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyBoard/Class/Home/V/HomeRankDetailPopView.m | 20 +++++++++- keyBoard/Class/Home/VC/HomeHotVC.m | 39 ++++++++++++++++++- keyBoard/Class/Home/VC/HomeRankContentVC.m | 37 +++++++++++++++++- 3 files changed, 91 insertions(+), 5 deletions(-) diff --git a/keyBoard/Class/Home/V/HomeRankDetailPopView.m b/keyBoard/Class/Home/V/HomeRankDetailPopView.m index cfb0362..1e3b1cb 100644 --- a/keyBoard/Class/Home/V/HomeRankDetailPopView.m +++ b/keyBoard/Class/Home/V/HomeRankDetailPopView.m @@ -59,6 +59,7 @@ self.downloadLabel.text = character.download ?: @""; self.descLabel.text = character.characterBackground ?: @""; [self.avatarView kb_setImageURL:character.avatarUrl placeholder:KBAvatarPlaceholderImage]; + [self kb_updateSaveButtonWithAdded:character.added]; } #pragma mark - Build UI @@ -138,6 +139,24 @@ if (self.closeHandler) self.closeHandler(); } +#pragma mark - UI State + +- (void)kb_updateSaveButtonWithAdded:(BOOL)added { + if (added) { + self.saveButton.enabled = NO; + self.saveButton.backgroundColor = [UIColor colorWithWhite:0.93 alpha:1.0]; + [self.saveButton setTitle:@"✓" forState:UIControlStateNormal]; + [self.saveButton setTitle:@"✓" forState:UIControlStateDisabled]; + [self.saveButton setTitleColor:[UIColor colorWithWhite:0.55 alpha:1.0] forState:UIControlStateNormal]; + [self.saveButton setTitleColor:[UIColor colorWithWhite:0.55 alpha:1.0] forState:UIControlStateDisabled]; + } else { + self.saveButton.enabled = YES; + self.saveButton.backgroundColor = [UIColor colorWithRed:0.02 green:0.75 blue:0.67 alpha:1.0]; + [self.saveButton setTitle:@"Save" forState:UIControlStateNormal]; + [self.saveButton setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; + } +} + #pragma mark - Helpers - (UIImage *)placeholderAvatar { @@ -246,4 +265,3 @@ } @end - diff --git a/keyBoard/Class/Home/VC/HomeHotVC.m b/keyBoard/Class/Home/VC/HomeHotVC.m index a8b9dce..46cbbee 100644 --- a/keyBoard/Class/Home/VC/HomeHotVC.m +++ b/keyBoard/Class/Home/VC/HomeHotVC.m @@ -284,9 +284,44 @@ pop.isClickBgDismiss = YES; // 点击背景关闭 pop.cornerRadius = 0; // 自定义 view 自处理圆角 + KBWeakSelf __weak typeof(pop) weakPop = pop; - content.saveHandler = ^{ [weakPop dismiss]; }; - content.closeHandler = ^{ [weakPop dismiss]; }; + content.saveHandler = ^{ + [weakPop dismiss]; + + if (![KBUserSessionManager shared].isLoggedIn) { + [[KBUserSessionManager shared] goLoginVC]; + return; + } + + __strong typeof(weakSelf) self = weakSelf; + if (!self) { return; } + if (indexPath.row >= self.listCharacters.count) { return; } + + KBCharacter *mc = self.listCharacters[indexPath.row]; + if (mc.added) { return; } + + NSString *cidStr = mc.ID ?: @""; + if (cidStr.length == 0) { return; } + NSNumber *cid = @([cidStr integerValue]); + NSString *emoji = mc.emoji ? mc.emoji : @""; + + [self.homeVM addUserCharacterWithId:cid emoji : emoji + completion:^(BOOL success, NSError * _Nullable error) { + if (success) { + mc.added = YES; + NSMutableArray *m = [self.listCharacters mutableCopy]; + [m replaceObjectAtIndex:indexPath.row withObject:mc]; + self.listCharacters = [m copy]; + [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone]; + + [self kb_refreshTopThreeView]; + } + }]; + }; + content.closeHandler = ^{ + [weakPop dismiss]; + }; [pop pop]; diff --git a/keyBoard/Class/Home/VC/HomeRankContentVC.m b/keyBoard/Class/Home/VC/HomeRankContentVC.m index e282bb5..972efac 100644 --- a/keyBoard/Class/Home/VC/HomeRankContentVC.m +++ b/keyBoard/Class/Home/VC/HomeRankContentVC.m @@ -210,9 +210,42 @@ pop.isClickBgDismiss = YES; // 点击背景关闭 pop.cornerRadius = 0; // 自定义 view 自处理圆角 + KBWeakSelf __weak typeof(pop) weakPop = pop; - content.saveHandler = ^{ [weakPop dismiss]; }; - content.closeHandler = ^{ [weakPop dismiss]; }; + content.saveHandler = ^{ + [weakPop dismiss]; + + if (![KBUserSessionManager shared].isLoggedIn) { + [[KBUserSessionManager shared] goLoginVC]; + return; + } + + __strong typeof(weakSelf) self = weakSelf; + if (!self) { return; } + if (indexPath.item >= self.characters.count) { return; } + + KBCharacter *mc = self.characters[indexPath.item]; + if (mc.added) { return; } + + NSString *cidStr = mc.ID ?: @""; + if (cidStr.length == 0) { return; } + NSNumber *cid = @([cidStr integerValue]); + NSString *emoji = mc.emoji ? mc.emoji : @""; + + [self.homeVM addUserCharacterWithId:cid emoji : emoji + completion:^(BOOL success, NSError * _Nullable error) { + if (success) { + mc.added = YES; + NSMutableArray *m = [self.characters mutableCopy]; + [m replaceObjectAtIndex:indexPath.item withObject:mc]; + self.characters = [m copy]; + [self.collectionView reloadItemsAtIndexPaths:@[indexPath]]; + } + }]; + }; + content.closeHandler = ^{ + [weakPop dismiss]; + }; [pop pop]; }