From 035002ceedf78d5ec73eabc0df7f06139939b967 Mon Sep 17 00:00:00 2001 From: Amine El Mouafik <412895+kytwb@users.noreply.github.com> Date: Mon, 8 Feb 2021 10:34:45 +0100 Subject: Synchronize with Franz 5.6.0 (#1033) Co-authored-by: FranzBot Co-authored-by: vantezzen Co-authored-by: Makazzz Co-authored-by: Stefan Malzner Co-authored-by: Amine Mouafik --- src/containers/auth/SetupAssistantScreen.js | 133 ++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 src/containers/auth/SetupAssistantScreen.js (limited to 'src/containers/auth') diff --git a/src/containers/auth/SetupAssistantScreen.js b/src/containers/auth/SetupAssistantScreen.js new file mode 100644 index 000000000..960ed7e33 --- /dev/null +++ b/src/containers/auth/SetupAssistantScreen.js @@ -0,0 +1,133 @@ +/* eslint-disable no-await-in-loop */ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import { inject, observer } from 'mobx-react'; + +import { sleep } from '../../helpers/async-helpers'; +import SetupAssistant from '../../components/auth/SetupAssistant'; +import ServicesStore from '../../stores/ServicesStore'; +import RecipesStore from '../../stores/RecipesStore'; +import { TODOS_RECIPE_ID } from '../../features/todos'; +import UserStore from '../../stores/UserStore'; + +export default @inject('stores', 'actions') @observer class SetupAssistantScreen extends Component { + services = { + whatsapp: { + name: 'WhatsApp', + hasTeamId: false, + }, + messenger: { + name: 'Messenger', + hasTeamId: false, + }, + gmail: { + name: 'Gmail', + hasTeamId: false, + }, + skype: { + name: 'Skype', + hasTeamId: false, + }, + telegram: { + name: 'Telegram', + hasTeamId: false, + }, + instagram: { + name: 'Instagram', + hasTeamId: false, + }, + slack: { + name: 'Slack', + hasTeamId: true, + }, + hangouts: { + name: 'Hangouts', + hasTeamId: false, + }, + linkedin: { + name: 'LinkedIn', + hasTeamId: false, + }, + } + + state = { + isSettingUpServices: false, + } + + async setupServices(serviceConfig) { + const { stores: { services, router, user } } = this.props; + console.log(serviceConfig); + + this.setState({ + isSettingUpServices: true, + }); + + // The store requests are not build for paralell requests so we need to finish one request after another + for (const config of serviceConfig) { + const serviceData = { + name: this.services[config.id].name, + }; + + if (config.team) { + serviceData.team = config.team; + } + + await services._createService({ + recipeId: config.id, + serviceData, + redirect: false, + skipCleanup: true, + }); + + await sleep(100); + } + + // Add Franz ToDos + await services._createService({ + recipeId: TODOS_RECIPE_ID, + serviceData: { + name: 'Franz ToDos', + }, + redirect: false, + skipCleanup: true, + }); + + this.setState({ + isSettingUpServices: false, + }); + + await sleep(100); + + router.push(user.pricingRoute); + } + + render() { + return ( + this.setupServices(config)} + services={this.services} + embed={false} + isSettingUpServices={this.state.isSettingUpServices} + /> + ); + } +} + +SetupAssistantScreen.wrappedComponent.propTypes = { + stores: PropTypes.shape({ + services: PropTypes.instanceOf(ServicesStore), + recipes: PropTypes.instanceOf(RecipesStore), + user: PropTypes.instanceOf(UserStore), + }).isRequired, + actions: PropTypes.shape({ + user: PropTypes.shape({ + invite: PropTypes.func.isRequired, + }).isRequired, + service: PropTypes.shape({ + createService: PropTypes.func.isRequired, + }).isRequired, + recipe: PropTypes.shape({ + install: PropTypes.func.isRequired, + }).isRequired, + }).isRequired, +}; -- cgit v1.2.3-70-g09d2