public UserDetailScreen( UserDetailScreenViewModel viewModel = null, UserDetailScreenActionModel actionModel = null, Key key = null ) : base(key: key) { this.viewModel = viewModel; this.actionModel = actionModel; }
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); } )); }
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); } )); }