public TeamDetailScreen( TeamDetailScreenViewModel viewModel = null, TeamDetailScreenActionModel actionModel = null, Key key = null ) : base(key: key) { this.viewModel = viewModel; this.actionModel = actionModel; }
public override Widget build(BuildContext context) { return(new StoreConnector <AppState, TeamDetailScreenViewModel>( converter: state => { var currentUserId = state.loginState.loginInfo.userId ?? ""; var team = this.FetchTeam(this.teamId, state.teamState.teamDict, state.teamState.slugDict); var followMap = state.followState.followDict.ContainsKey(key: currentUserId) ? state.followState.followDict[key: currentUserId] : new Dictionary <string, bool>(); return new TeamDetailScreenViewModel { teamLoading = state.teamState.teamLoading, teamArticleLoading = state.teamState.teamArticleLoading, team = team, teamId = this.teamId, articleDict = state.articleState.articleDict, followMap = followMap, currentUserId = state.loginState.loginInfo.userId ?? "", isLoggedIn = state.loginState.isLoggedIn }; }, builder: (context1, viewModel, dispatcher) => { var actionModel = new TeamDetailScreenActionModel { startFetchTeam = () => dispatcher.dispatch(new StartFetchTeamAction()), fetchTeam = () => dispatcher.dispatch <IPromise>(Actions.fetchTeam(this.teamId)), startFetchTeamArticle = () => dispatcher.dispatch(new StartFetchTeamArticleAction()), fetchTeamArticle = pageNumber => dispatcher.dispatch <IPromise>(Actions.fetchTeamArticle(viewModel.team.id, pageNumber)), 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 }); }, pushToTeamFollower = teamId => dispatcher.dispatch( new MainNavigatorPushToTeamFollowerAction { teamId = teamId } ), pushToTeamMember = teamId => dispatcher.dispatch( new MainNavigatorPushToTeamMemberAction { teamId = teamId } ), startFollowTeam = () => dispatcher.dispatch(new StartFetchFollowTeamAction { followTeamId = viewModel.team.id }), followTeam = teamId => dispatcher.dispatch <IPromise>(Actions.fetchFollowTeam(teamId)), startUnFollowTeam = () => dispatcher.dispatch(new StartFetchUnFollowTeamAction { unFollowTeamId = viewModel.team.id }), unFollowTeam = teamId => dispatcher.dispatch <IPromise>(Actions.fetchUnFollowTeam(teamId)), shareToWechat = (type, title, description, linkUrl, imageUrl) => dispatcher.dispatch <IPromise>( Actions.shareToWechat(type, title, description, linkUrl, imageUrl)) }; return new TeamDetailScreen(viewModel, actionModel); } )); }