LoginUtils.m 5.2 KB
//
//  LoginUtils.m
//  DreamSleep
//
//  Created by peter on 2022/4/19.
//

#import "LoginUtils.h"
#import "LoginController.h"

@implementation LoginUtils

#pragma mark - public
+ (UserModel *)getUserLoginData {
    UserModel *userModel = [NSKeyedUnarchiver unarchiveObjectWithData:kGetUserDefaultsObj(UserBasicInfo)];
    // DSLog(@"获取用户信息:%@", userModel.debugDescription);
    return userModel;
}

+ (int)getUserID {
    UserModel *userModel = [self getUserLoginData];
    return userModel.user_id;
}

+ (NSString *)getSid {
    UserModel *userModel = [self getUserLoginData];
    return userModel.sid;
}

+ (NSString *)getToken {
    UserModel *userModel = [self getUserLoginData];
    DSLog(@"token:%@", userModel.token);
    return userModel.token;
}

+ (NSString *)getFaceImg {
    UserModel *userModel = [self getUserLoginData];
    return userModel.face_img;
}

+ (NSString *)getBirthday {
    UserModel *userModel = [self getUserLoginData];
    return userModel.birthday;
}

+ (NSString *)getUserMobile {
    UserModel *userModel = [self getUserLoginData];
    return userModel.mobile;
}

+ (void)updateSid:(NSString *)sid token:(NSString *)token isAccess:(int)isAccess {
    UserModel *userModel = [self getUserLoginData];
    userModel.sid = sid;
    userModel.token = token;
    userModel.is_access = isAccess;
    [self saveUserLoginData:userModel];
}

+ (void)updateFaceImg:(NSString *)face_img {
    UserModel *userModel = [self getUserLoginData];
    userModel.face_img = face_img;
    [self saveUserLoginData:userModel];
}

+ (void)updateUserInfo:(NSDictionary *)infos {
    NSString *key = [infos allKeys][0];
    id value = infos[key];
    UserModel *userModel = [self getUserLoginData];
    if ([key isEqualToString:@"nick_name"]) {
        userModel.nick_name = value;
    } else if ([key isEqualToString:@"gender"]) {
        userModel.gender = [value boolValue];
    } else if ([key isEqualToString:@"birthday"]) {
        userModel.birthday = value;
    } else if ([key isEqualToString:@"mobile"]) {
        userModel.mobile = value;
    }
    [self saveUserLoginData:userModel];
}

+ (void)saveUserLoginData:(UserModel *)model {
    NSData *userData = [NSKeyedArchiver archivedDataWithRootObject:model];
    kSetUserDefaultsObj(userData, UserBasicInfo);
    kUserDefaultsSynchronize;
    // 发送更新用户数据显示UI通知
    [[NSNotificationCenter defaultCenter] postNotificationName:HasUpdateUserDataNoti object:nil];
    
    DSLog(@"保存用户信息:%@", model.debugDescription);
}

+ (void)clearUserLoginData {
    kUserDefaultsRemoveObj(UserBasicInfo);
    kUserDefaultsSynchronize;
    
    // 发送更新用户数据显示UI通知
    [[NSNotificationCenter defaultCenter] postNotificationName:HasUpdateUserDataNoti object:nil];
    // 其他通知
    [LoginUtils updateNoti];
}

+ (void)jumpToLoginControllerWithTarget:(UIViewController *)target {
    if (target && [target isKindOfClass:[UIViewController class]]) {
        BaseNaviController *navi = [[BaseNaviController alloc] initWithRootViewController:[[LoginController alloc] init]];
        [target presentViewController:navi animated:YES completion:nil];
    }
}

+ (void)jumpToLoginControllerWithTarget:(UIViewController *)target isAccess:(BOOL)isAccess {
    if (target && [target isKindOfClass:[UIViewController class]]) {
        LoginController *loginVC = [[LoginController alloc] init];
        loginVC.isAccess = isAccess;
        BaseNaviController *navi = [[BaseNaviController alloc] initWithRootViewController:loginVC];
        [target presentViewController:navi animated:YES completion:nil];
    }
}

+ (void)jumpToLoginControllerWithTarget:(UIViewController *)target selector:(SEL)sel {
    if (target && [target isKindOfClass:[UIViewController class]]) {
        LoginController *loginVC = [[LoginController alloc] init];
        loginVC.successBlock = ^{
            if ([target respondsToSelector:sel]) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
                [target performSelector:sel];
#pragma clang diagnostic pop
            }
        };
        BaseNaviController *navi = [[BaseNaviController alloc] initWithRootViewController:loginVC];
        [target presentViewController:navi animated:YES completion:nil];
    }
}

+ (void)updateDataNotiAfterLoginSuccess {
    [LoginUtils updateNoti];
}

#pragma mark - private
+ (void)updateNoti {
    // 刷新主页数据
    [[NSNotificationCenter defaultCenter] postNotificationName:NeedUpdateHomePage object:nil];
    // 刷新AI睡眠教练
    [[NSNotificationCenter defaultCenter] postNotificationName:NeedUpdateAICoach object:nil];
    // 刷新社区动态列表
    [[NSNotificationCenter defaultCenter] postNotificationName:NeedUpdateComList object:ReBeginRefresh];
}

+ (void)saveCookie {
    // 存储Cookie
    NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
    NSURL *url = [NSURL URLWithString:ServerURL];
    NSString *IP = url.host;
    for (NSHTTPCookie *tempCookie in cookies) {
        if ([tempCookie.domain isEqualToString:IP]) {
            DSLog(@"tempCookie:%@", tempCookie);
            kSetUserDefaultsObj(tempCookie.properties, DsAppCookie);
            kUserDefaultsSynchronize;
        }
    }
}

@end