public FavoriteDetailScreen( FavoriteDetailScreenViewModel viewModel, FavoriteDetailScreenActionModel actionModel, Key key = null ) : base(key: key) { this.viewModel = viewModel; this.actionModel = actionModel; }
public override Widget build(BuildContext context) { return(new StoreConnector <AppState, FavoriteDetailScreenViewModel>( converter: state => { var favoriteTagDict = state.favoriteState.favoriteTagDict; var favoriteTag = favoriteTagDict.ContainsKey(key: this.tagId) ? favoriteTagDict[key: this.tagId] : null; var favoriteDetailArticleIdDict = state.favoriteState.favoriteDetailArticleIdDict; var favoriteDetailArticleIds = favoriteDetailArticleIdDict.ContainsKey(key: this.tagId) ? favoriteDetailArticleIdDict[key: this.tagId] : null; var collectedMap = state.loginState.isLoggedIn ? state.favoriteState.collectedTagMap.ContainsKey(state.loginState.loginInfo.userId) ? state.favoriteState.collectedTagMap[state.loginState.loginInfo.userId] : new Dictionary <string, bool>() : new Dictionary <string, bool>(); var isCollected = false; if (favoriteTag != null) { isCollected = state.loginState.isLoggedIn && collectedMap.ContainsKey(favoriteTag.quoteTagId.isEmpty() ? favoriteTag.id : favoriteTag.quoteTagId); } var currentUserId = state.loginState.loginInfo.userId ?? ""; var myFavoriteIds = state.favoriteState.favoriteTagIdDict.ContainsKey(key: currentUserId) ? state.favoriteState.favoriteTagIdDict[key: currentUserId] : new List <string>(); return new FavoriteDetailScreenViewModel { userId = this.userId, tagId = this.tagId, type = this.type, favoriteDetailLoading = state.favoriteState.favoriteDetailLoading, favoriteDetailArticleIds = favoriteDetailArticleIds, favoriteArticleOffset = favoriteDetailArticleIds?.Count ?? 0, favoriteArticleHasMore = state.favoriteState.favoriteDetailHasMore, isLoggedIn = state.loginState.isLoggedIn, favoriteTag = favoriteTag, articleDict = state.articleState.articleDict, userDict = state.userState.userDict, teamDict = state.teamState.teamDict, currentUserId = state.loginState.loginInfo.userId ?? "", isCollect = isCollected, collectLoading = state.leaderBoardState.detailCollectLoading, collectChangeMap = state.favoriteState.collectedTagChangeMap, myFavoriteIds = myFavoriteIds }; }, builder: (context1, viewModel, dispatcher) => { var actionModel = new FavoriteDetailScreenActionModel { mainRouterPop = () => dispatcher.dispatch(new MainNavigatorPopAction()), startFetchFavoriteDetail = () => dispatcher.dispatch(new StartFetchFavoriteDetailAction()), fetchFavoriteDetail = (tagId, offset) => dispatcher.dispatch <IPromise>(Actions.fetchFavoriteDetail(userId: this.userId, tagId: tagId, offset: offset)), unFavoriteArticle = (articleId, favoriteId) => dispatcher.dispatch <IPromise>(Actions.unFavoriteArticle(articleId: articleId, favoriteId: favoriteId)), pushToLogin = () => dispatcher.dispatch(new MainNavigatorPushToAction { routeName = MainNavigatorRoutes.Login }), pushToReport = reportId => dispatcher.dispatch( new MainNavigatorPushToReportAction { reportId = reportId, reportType = ReportType.article } ), pushToBlock = articleId => { dispatcher.dispatch(new BlockArticleAction { articleId = articleId }); dispatcher.dispatch(new DeleteArticleHistoryAction { articleId = articleId }); }, pushToArticleDetail = articleId => dispatcher.dispatch( new MainNavigatorPushToArticleDetailAction { articleId = articleId } ), pushToEditFavorite = tagId => dispatcher.dispatch( new MainNavigatorPushToEditFavoriteAction { tagId = tagId } ), shareToWechat = (type, title, description, linkUrl, imageUrl) => dispatcher.dispatch <IPromise>( Actions.shareToWechat(type: type, title: title, description: description, linkUrl: linkUrl, imageUrl: imageUrl)), collectFavoriteTag = (itemId, tagId) => dispatcher.dispatch <IPromise>(Actions.collectFavoriteTag(itemId, tagId: tagId)), cancelCollectFavoriteTag = (tagId, itemId) => dispatcher.dispatch <IPromise>(Actions.cancelCollectFavoriteTag(tagId, itemId)) }; return new FavoriteDetailScreen(viewModel: viewModel, actionModel: actionModel); } )); }
public override Widget build(BuildContext context) { return(new StoreConnector <AppState, FavoriteDetailScreenViewModel>( converter: state => { var favoriteTagDict = state.favoriteState.favoriteTagDict; var favoriteTag = favoriteTagDict.ContainsKey(key: this.tagId) ? favoriteTagDict[key: this.tagId] : null; var favoriteDetailArticleIdDict = state.favoriteState.favoriteDetailArticleIdDict; var favoriteDetailArticleIds = favoriteDetailArticleIdDict.ContainsKey(key: this.tagId) ? favoriteDetailArticleIdDict[key: this.tagId] : null; return new FavoriteDetailScreenViewModel { tagId = this.tagId, favoriteDetailLoading = state.favoriteState.favoriteDetailLoading, favoriteDetailArticleIds = favoriteDetailArticleIds, favoriteArticleOffset = favoriteDetailArticleIds == null ? 0 : favoriteDetailArticleIds.Count, favoriteArticleHasMore = state.favoriteState.favoriteDetailHasMore, isLoggedIn = state.loginState.isLoggedIn, favoriteTag = favoriteTag, articleDict = state.articleState.articleDict, userDict = state.userState.userDict, teamDict = state.teamState.teamDict }; }, builder: (context1, viewModel, dispatcher) => { var actionModel = new FavoriteDetailScreenActionModel { mainRouterPop = () => dispatcher.dispatch(new MainNavigatorPopAction()), startFetchFavoriteDetail = () => dispatcher.dispatch(new StartFetchFavoriteDetailAction()), fetchFavoriteDetail = (tagId, offset) => dispatcher.dispatch <IPromise>(Actions.fetchFavoriteDetail(userId: this.userId, tagId: tagId, offset: offset)), unFavoriteArticle = (articleId, favoriteId) => dispatcher.dispatch <IPromise>(Actions.unFavoriteArticle(articleId: articleId, favoriteId: favoriteId)), pushToLogin = () => dispatcher.dispatch(new MainNavigatorPushToAction { routeName = MainNavigatorRoutes.Login }), pushToReport = reportId => dispatcher.dispatch( new MainNavigatorPushToReportAction { reportId = reportId, reportType = ReportType.article } ), pushToBlock = articleId => { dispatcher.dispatch(new BlockArticleAction { articleId = articleId }); dispatcher.dispatch(new DeleteArticleHistoryAction { articleId = articleId }); }, pushToArticleDetail = articleId => dispatcher.dispatch( new MainNavigatorPushToArticleDetailAction { articleId = articleId } ), pushToEditFavorite = tagId => dispatcher.dispatch( new MainNavigatorPushToEditFavoriteAction { tagId = tagId } ), shareToWechat = (type, title, description, linkUrl, imageUrl) => dispatcher.dispatch <IPromise>( Actions.shareToWechat(type: type, title: title, description: description, linkUrl: linkUrl, imageUrl: imageUrl)) }; return new FavoriteDetailScreen(viewModel: viewModel, actionModel: actionModel); } )); }