123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- //
- // RQProfileViewModel.m
- // RQCommon
- //
- // Created by 张嵘 on 2018/11/21.
- // Copyright © 2018 张嵘. All rights reserved.
- //
- #import "RQProfileViewModel.h"
- @interface RQProfileViewModel ()
- /// The current `user`.
- @property (nonatomic, readwrite , strong) RQUserModel *user;
- @end
- @implementation RQProfileViewModel
- - (instancetype)initWithServices:(id<RQViewModelServices>)services params:(NSDictionary *)params{
- if (self = [super initWithServices:services params:params]) {
- /// 获取user
- self.user = [RQ_USER_MANAGER currentUser];
- }
- return self;
- }
- - (void)initialize
- {
- [super initialize];
- @weakify(self);
- self.title = @"快捷功能";
- /// 获取网络数据+本地数据
- RACSignal *fetchLocalDataSignal = [RACSignal return:[self fetchLocalData]];
- RACSignal *requestRemoteDataSignal = self.requestRemoteDataCommand.executionSignals.switchToLatest;
- [[[fetchLocalDataSignal
- merge:requestRemoteDataSignal]
- deliverOnMainThread]
- subscribeNext:^(RQUserModel *user) {
- @strongify(self)
- [self willChangeValueForKey:@"user"];
- /// user模型的数据 重置,但是user的 指针地址不变
- [self.user mergeValuesForKeysFromModel:user];
- [self didChangeValueForKey:@"user"];
- }];
-
-
- /// 配置数据
- [self _configureData];
- }
- /// 获取本地的用户数据
- - (RQUserModel *)fetchLocalData{
- return [RQ_USER_MANAGER currentUser];
- }
- /// 获取网络的用户数据 用于比对
- - (RACSignal *)requestRemoteDataSignalWithPage:(NSUInteger)page {
- return [[RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
- RQ_USER_MANAGER.currentUser.channel = RQUserLoginChannelTypeAutoLogin;
- // [[RQ_HTTP_Service studentLoginWithLoginCode:RQ_USER_MANAGER.currentUser.loginCode password:RQ_USER_MANAGER.currentUser.password] subscribeNext:^(RQUserModel *userModel) {
- // [subscriber sendNext:userModel];
- // } error:^(NSError * _Nullable error) {
- // [subscriber sendError:error];
- // } completed:^{
- // [subscriber sendCompleted];
- // }];
- return [RACDisposable disposableWithBlock:^{
- /// 取消任务
- }];
- }] doError:^(NSError * _Nonnull error) {
- [MBProgressHUD rq_showErrorTips:error];
- }];
- }
- #pragma mark - 配置数据
- - (void)_configureData{
-
- /// 第一组
- RQCommonGroupViewModel *group0 = [RQCommonGroupViewModel groupViewModel];
- /// 用户信息
- CommonProfileHeaderItemViewModel *profileHeader = [[CommonProfileHeaderItemViewModel alloc] initViewModelWithUser:self.user];
- /// 由于涉及到 更新用户的数据,这里最后把用户数据传递过去
- // profileHeader.destViewModelClass = [RQUserInfoViewModel class];
- @weakify(self);
- profileHeader.operation = ^{
- @strongify(self);
- // RQUserInfoViewModel *viewModel = [[RQUserInfoViewModel alloc] initWithServices:self.services params:@{RQViewModelUtilKey:self.user}];
- // [self.services pushViewModel:viewModel animated:YES];
-
- };
- group0.itemViewModels = @[profileHeader];
-
- /// 第一组
- RQCommonGroupViewModel *group1 = [RQCommonGroupViewModel groupViewModel];
- /// 支付
- RQCommonArrowItemViewModel *pay = [RQCommonArrowItemViewModel itemViewModelWithTitle:@"支付" icon:@"icons_outlined_wechatpay.svg"];
-
- /// 设置组头高度
- group1.itemViewModels = @[pay];
-
- /// 第二组
- RQCommonGroupViewModel *group2 = [RQCommonGroupViewModel groupViewModel];
- /// 收藏
- RQCommonArrowItemViewModel *collect = [RQCommonArrowItemViewModel itemViewModelWithTitle:@"收藏" icon:@"icons_outlined_colorful_favorites.svg"];
- /// 相册
- RQCommonArrowItemViewModel *album = [RQCommonArrowItemViewModel itemViewModelWithTitle:@"相册" icon:@"icons_outlined_album.svg"];
- /// 卡包
- RQCommonArrowItemViewModel *cardPackage = [RQCommonArrowItemViewModel itemViewModelWithTitle:@"卡包" icon:@"icons_outlined_colorful_cards.svg"];
- /// 表情
- RQCommonArrowItemViewModel *expression = [RQCommonArrowItemViewModel itemViewModelWithTitle:@"表情" icon:@"icons_outlined_sticker.svg"];
- group2.itemViewModels = @[collect, album, cardPackage,expression];
-
- /// 第三组
- RQCommonGroupViewModel *group3 = [RQCommonGroupViewModel groupViewModel];
- /// 设置
- RQCommonArrowItemViewModel *setting = [RQCommonArrowItemViewModel itemViewModelWithTitle:@"设置" icon:@"icons_outlined_setting.svg"];
-
- #if defined(DEBUG)||defined(_DEBUG)
- /// 调试模式
- RQCommonArrowItemViewModel *debug = [RQCommonArrowItemViewModel itemViewModelWithTitle:@"打开/关闭调试器" icon:@"mh_profile_debug_25x25"];
- debug.operation = ^{
- [[RQDebugTouchView sharedInstance] setHide:![RQDebugTouchView sharedInstance].isHide];
- [RQSharedAppDelegate.window bringSubviewToFront:[RQDebugTouchView sharedInstance]];
- };
- group3.itemViewModels = @[setting , debug];
- #else
- /// 发布模式
- group3.itemViewModels = @[setting];
- #endif
- self.dataSource = @[group0 , group1 , group2 , group3];
- }
- @end
|