public override Widget build(BuildContext context) { return(new StoreConnector <AppState, EventDetailScreenViewModel>( converter: state => new EventDetailScreenViewModel { eventId = this.eventId, isLoggedIn = state.loginState.isLoggedIn, eventDetailLoading = state.eventState.eventDetailLoading, joinEventLoading = state.eventState.joinEventLoading, channelId = state.eventState.channelId, eventsDict = state.eventState.eventsDict }, builder: (context1, viewModel, dispatcher) => { var actionModel = new EventDetailScreenActionModel { mainRouterPop = () => dispatcher.dispatch(new MainNavigatorPopAction()), pushToLogin = () => dispatcher.dispatch(new MainNavigatorPushToAction { routeName = MainNavigatorRoutes.Login }), openUrl = url => dispatcher.dispatch(new MainNavigatorPushToWebViewAction { url = url }), copyText = text => dispatcher.dispatch(new CopyTextAction { text = text }), startFetchEventDetail = () => dispatcher.dispatch(new StartFetchEventDetailAction()), fetchEventDetail = (id, eventType) => dispatcher.dispatch <IPromise>(Actions.fetchEventDetail(id, eventType)), startJoinEvent = () => dispatcher.dispatch(new StartJoinEventAction()), joinEvent = id => dispatcher.dispatch <IPromise>(Actions.joinEvent(id)), shareToWechat = (type, title, description, linkUrl, imageUrl) => dispatcher.dispatch <IPromise>( Actions.shareToWechat(type, title, description, linkUrl, imageUrl)) }; return new EventOfflineDetailScreen(viewModel, actionModel); } )); }
public EventOfflineDetailScreen( EventDetailScreenViewModel viewModel = null, EventDetailScreenActionModel actionModel = null, Key key = null ) : base(key: key) { this.viewModel = viewModel; this.actionModel = actionModel; }
public override Widget build(BuildContext context) { return(new StoreConnector <AppState, EventDetailScreenViewModel>( converter: state => { var channelId = state.eventState.channelId; var channelMessageList = state.messageState.channelMessageList; var messageList = new List <string>(); if (channelMessageList.ContainsKey(channelId)) { messageList = channelMessageList[channelId]; } return new EventDetailScreenViewModel { eventId = this.eventId, currOldestMessageId = state.messageState.currOldestMessageId, isLoggedIn = state.loginState.isLoggedIn, eventDetailLoading = state.eventState.eventDetailLoading, joinEventLoading = state.eventState.joinEventLoading, showChatWindow = state.eventState.showChatWindow, channelId = state.eventState.channelId, messageList = messageList, messageLoading = state.messageState.messageLoading, hasMore = state.messageState.hasMore, sendMessageLoading = state.messageState.sendMessageLoading, channelMessageDict = state.messageState.channelMessageDict, eventsDict = state.eventState.eventsDict, userLicenseDict = state.userState.userLicenseDict }; }, builder: (context1, viewModel, dispatcher) => { var actionModel = new EventDetailScreenActionModel { mainRouterPop = () => dispatcher.dispatch(new MainNavigatorPopAction()), pushToLogin = () => dispatcher.dispatch(new MainNavigatorPushToAction { routeName = MainNavigatorRoutes.Login }), pushToUserDetail = userId => { dispatcher.dispatch( new MainNavigatorPushToUserDetailAction { userId = userId } ); }, openUrl = url => { OpenUrlUtil.OpenUrl(url, dispatcher); }, browserImage = url => { dispatcher.dispatch(new MainNavigatorPushToPhotoViewAction { urls = ContentDescription.imageUrls, url = url }); }, copyText = text => dispatcher.dispatch(new CopyTextAction { text = text }), startFetchEventDetail = () => dispatcher.dispatch(new StartFetchEventDetailAction()), fetchEventDetail = (id, eventType) => dispatcher.dispatch <IPromise>(Actions.fetchEventDetail(id, eventType)), startSendMessage = () => dispatcher.dispatch(new StartSendMessageAction()), sendMessage = (channelId, content, nonce, parentMessageId) => dispatcher.dispatch <IPromise>( Actions.sendMessage(channelId, content, nonce, parentMessageId)), showChatWindow = show => dispatcher.dispatch(new ShowChatWindowAction { show = show }), startFetchMessages = () => dispatcher.dispatch(new StartFetchMessagesAction()), fetchMessages = (channelId, currOldestMessageId, isFirstLoad) => dispatcher.dispatch <IPromise>( Actions.fetchMessages(channelId, currOldestMessageId, isFirstLoad) ), shareToWechat = (type, title, description, linkUrl, imageUrl, path) => dispatcher.dispatch <IPromise>( Actions.shareToWechat(type, title, description, linkUrl, imageUrl, path, true)) }; return new EventOnlineDetailScreen(viewModel, actionModel); } )); }