Beispiel #1
0
 public UserDetailScreen(
     UserDetailScreenViewModel viewModel     = null,
     UserDetailScreenActionModel actionModel = null,
     Key key = null
     ) : base(key: key)
 {
     this.viewModel   = viewModel;
     this.actionModel = actionModel;
 }
Beispiel #2
0
 public override Widget build(BuildContext context)
 {
     return(new StoreConnector <AppState, UserDetailScreenViewModel>(
                converter: state => {
         var user = this.fetchUser(this.userId, state.userState.userDict, state.userState.slugDict);
         var currentUserId = state.loginState.loginInfo.userId ?? "";
         var followMap = state.followState.followDict.ContainsKey(key: currentUserId)
                 ? state.followState.followDict[key: currentUserId]
                 : new Dictionary <string, bool>();
         return new UserDetailScreenViewModel {
             userLoading = state.userState.userLoading,
             userArticleLoading = state.userState.userArticleLoading,
             userFavoriteLoading = state.favoriteState.favoriteDetailLoading,
             favoriteTagIdDict = state.favoriteState.favoriteTagIdDict,
             userFavoriteHasMore = state.favoriteState.favoriteDetailHasMore,
             user = user,
             userId = this.userId,
             userLicenseDict = state.userState.userLicenseDict,
             articleDict = state.articleState.articleDict,
             favoriteTagDict = state.favoriteState.favoriteTagDict,
             followMap = followMap,
             userDict = state.userState.userDict,
             teamDict = state.teamState.teamDict,
             currentUserId = currentUserId,
             isLoggedIn = state.loginState.isLoggedIn
         };
     },
                builder: (context1, viewModel, dispatcher) => {
         var actionModel = new UserDetailScreenActionModel {
             startFetchUserProfile = () => dispatcher.dispatch(new StartFetchUserProfileAction()),
             fetchUserProfile = () => dispatcher.dispatch <IPromise>(Actions.fetchUserProfile(this.userId)),
             startFetchUserArticle = () => dispatcher.dispatch(new StartFetchUserArticleAction()),
             fetchUserArticle = (userId, pageNumber) =>
                                dispatcher.dispatch <IPromise>(Actions.fetchUserArticle(userId: userId,
                                                                                        pageNumber: pageNumber)),
             startFetchUserFavorite = () => dispatcher.dispatch(new StartFetchFavoriteDetailAction()),
             fetchUserFavorite = (userId, offset) =>
                                 dispatcher.dispatch <IPromise>(Actions.fetchFavoriteTags(userId: userId, offset: offset)),
             startFollowUser = userId =>
                               dispatcher.dispatch(new StartFollowUserAction {
                 followUserId = userId
             }),
             followUser = userId =>
                          dispatcher.dispatch <IPromise>(Actions.fetchFollowUser(followUserId: userId)),
             startUnFollowUser = userId => dispatcher.dispatch(new StartUnFollowUserAction
             {
                 unFollowUserId = userId
             }),
             unFollowUser = userId =>
                            dispatcher.dispatch <IPromise>(Actions.fetchUnFollowUser(unFollowUserId: userId)),
             deleteFavoriteTag = tagId =>
                                 dispatcher.dispatch <IPromise>(Actions.deleteFavoriteTag(tagId: tagId)),
             mainRouterPop = () => dispatcher.dispatch(new MainNavigatorPopAction()),
             pushToLogin = () => dispatcher.dispatch(new MainNavigatorPushToAction {
                 routeName = MainNavigatorRoutes.Login
             }),
             pushToArticleDetail = id => dispatcher.dispatch(
                 new MainNavigatorPushToArticleDetailAction {
                 articleId = id
             }
                 ),
             pushToFavoriteDetail = (userId, tagId) => dispatcher.dispatch(
                 new MainNavigatorPushToFavoriteDetailAction {
                 userId = userId,
                 tagId = tagId
             }
                 ),
             pushToCreateFavorite = tagId => dispatcher.dispatch(
                 new MainNavigatorPushToEditFavoriteAction {
                 tagId = tagId
             }
                 ),
             pushToReport = (reportId, reportType) => dispatcher.dispatch(
                 new MainNavigatorPushToReportAction {
                 reportId = reportId,
                 reportType = reportType
             }
                 ),
             pushToBlock = articleId => {
                 dispatcher.dispatch(new BlockArticleAction {
                     articleId = articleId
                 });
                 dispatcher.dispatch(new DeleteArticleHistoryAction {
                     articleId = articleId
                 });
             },
             pushToUserFollowing = (userId, initialPage) => dispatcher.dispatch(
                 new MainNavigatorPushToUserFollowingAction {
                 userId = userId,
                 initialPage = initialPage
             }
                 ),
             pushToUserFollower = userId => dispatcher.dispatch(
                 new MainNavigatorPushToUserFollowerAction {
                 userId = userId
             }
                 ),
             pushToEditPersonalInfo = userId => dispatcher.dispatch(
                 new MainNavigatorPushToEditPersonalInfoAction {
                 userId = userId
             }
                 ),
             shareToWechat = (type, title, description, linkUrl, imageUrl) => dispatcher.dispatch <IPromise>(
                 Actions.shareToWechat(type, title, description, linkUrl, imageUrl))
         };
         return new UserDetailScreen(viewModel: viewModel, actionModel: actionModel);
     }
                ));
 }
Beispiel #3
0
 public override Widget build(BuildContext context)
 {
     return(new StoreConnector <AppState, UserDetailScreenViewModel>(
                converter: state => {
         var user = state.userState.userDict.ContainsKey(key: this.userId)
                 ? state.userState.userDict[key: this.userId]
                 : null;
         var articleOffset = user == null ? 0 : user.articleIds == null ? 0 : user.articleIds.Count;
         var currentUserId = state.loginState.loginInfo.userId ?? "";
         var followMap = state.followState.followDict.ContainsKey(key: currentUserId)
                 ? state.followState.followDict[key: currentUserId]
                 : new Dictionary <string, bool>();
         return new UserDetailScreenViewModel {
             userId = this.userId,
             userLoading = state.userState.userLoading,
             userArticleLoading = state.userState.userArticleLoading,
             user = user,
             articleDict = state.articleState.articleDict,
             followMap = followMap,
             articleOffset = articleOffset,
             currentUserId = currentUserId,
             isLoggedIn = state.loginState.isLoggedIn
         };
     },
                builder: (context1, viewModel, dispatcher) => {
         var actionModel = new UserDetailScreenActionModel {
             startFetchUserProfile = () => dispatcher.dispatch(new StartFetchUserProfileAction()),
             fetchUserProfile = () => dispatcher.dispatch <IPromise>(Actions.fetchUserProfile(this.userId)),
             startFetchUserArticle = () => dispatcher.dispatch(new StartFetchUserArticleAction()),
             fetchUserArticle = offset =>
                                dispatcher.dispatch <IPromise>(Actions.fetchUserArticle(this.userId, offset)),
             startFollowUser = () =>
                               dispatcher.dispatch(new StartFetchFollowUserAction {
                 followUserId = this.userId
             }),
             followUser = () => dispatcher.dispatch <IPromise>(Actions.fetchFollowUser(this.userId)),
             startUnFollowUser = () => dispatcher.dispatch(new StartFetchUnFollowUserAction
             {
                 unFollowUserId = this.userId
             }),
             unFollowUser = () => dispatcher.dispatch <IPromise>(Actions.fetchUnFollowUser(this.userId)),
             mainRouterPop = () => dispatcher.dispatch(new MainNavigatorPopAction()),
             pushToLogin = () => dispatcher.dispatch(new MainNavigatorPushToAction {
                 routeName = MainNavigatorRoutes.Login
             }),
             pushToArticleDetail = id => dispatcher.dispatch(
                 new MainNavigatorPushToArticleDetailAction {
                 articleId = id
             }
                 ),
             pushToReport = (reportId, reportType) => dispatcher.dispatch(
                 new MainNavigatorPushToReportAction {
                 reportId = reportId,
                 reportType = reportType
             }
                 ),
             pushToBlock = articleId => {
                 dispatcher.dispatch(new BlockArticleAction {
                     articleId = articleId
                 });
                 dispatcher.dispatch(new DeleteArticleHistoryAction {
                     articleId = articleId
                 });
             },
             pushToUserFollowing = (userId, initialPage) => dispatcher.dispatch(
                 new MainNavigatorPushToUserFollowingAction {
                 userId = userId,
                 initialPage = initialPage
             }
                 ),
             pushToUserFollower = userId => dispatcher.dispatch(
                 new MainNavigatorPushToUserFollowerAction {
                 userId = userId
             }
                 ),
             pushToEditPersonalInfo = userId => dispatcher.dispatch(
                 new MainNavigatorPushToEditPersonalInfoAction {
                 userId = userId
             }
                 ),
             shareToWechat = (type, title, description, linkUrl, imageUrl) => dispatcher.dispatch <IPromise>(
                 Actions.shareToWechat(type, title, description, linkUrl, imageUrl))
         };
         return new UserDetailScreen(viewModel, actionModel);
     }
                ));
 }