// // KBMyVM.m // keyBoard // // Created by Mac on 2025/12/3. // #import "KBMyVM.h" #import "AppDelegate.h" #import "KBNetworkManager.h" #import "KBUser.h" @implementation KBMyVM - (void)fetchUserDetailWithCompletion:(KBMyUserDetailCompletion)completion { // [KBHUD show]; [[KBNetworkManager shared] GET:KB_API_USER_DETAIL parameters:nil headers:nil autoShowBusinessError:NO completion:^(NSDictionary *jsonOrData, NSURLResponse * _Nullable response, NSError * _Nullable error) { [KBHUD dismiss]; if (error) { NSString *msg = KBBizMessageFromJSONObject(jsonOrData) ?: error.localizedDescription ?: KBLocalized(@"Network error"); [KBHUD showInfo:msg]; if (completion) completion(nil, error); return; } id dataObj = jsonOrData[KBData] ?: jsonOrData[@"data"]; if (![dataObj isKindOfClass:[NSDictionary class]]) { NSError *e = [NSError errorWithDomain:KBNetworkErrorDomain code:KBNetworkErrorInvalidResponse userInfo:@{NSLocalizedDescriptionKey: KBLocalized(@"Invalid response")}]; [KBHUD showInfo:e.localizedDescription]; if (completion) completion(nil, e); return; } KBUser *user = [KBUser mj_objectWithKeyValues:(NSDictionary *)dataObj]; if (completion) completion(user, nil); }]; } - (void)logout{ [KBHUD show]; [[KBNetworkManager shared] GET:API_LOGOUT parameters:nil headers:nil autoShowBusinessError:NO completion:^(NSDictionary *jsonOrData, NSURLResponse * _Nullable response, NSError * _Nullable error) { // 不管成功失败,都先把 HUD 收掉 [KBHUD dismiss]; if (error) { // 如果是业务错误,可以把服务端 message 提示出来 NSString *msg = KBBizMessageFromJSONObject(jsonOrData) ?: error.localizedDescription ?: KBLocalized(@"Network error"); [KBHUD showInfo:msg]; return; } NSString *message = jsonOrData[KBMessage] ?: KBLocalized(@"Success"); [KBHUD showSuccess:message]; // 本地会话退出 [[KBUserSessionManager shared] logout]; // 回到登录 / 主界面 dispatch_async(dispatch_get_main_queue(), ^{ id appDelegate = UIApplication.sharedApplication.delegate; if ([appDelegate respondsToSelector:@selector(toMainTabbarVC)]) { AppDelegate *delegate = (AppDelegate *)appDelegate; [delegate toMainTabbarVC]; } }); }]; } @end