aboutsummaryrefslogtreecommitdiffstats
path: root/src/features
diff options
context:
space:
mode:
authorLibravatar kytwb <kytwb@pm.me>2021-12-18 04:24:10 +0100
committerLibravatar kytwb <kytwb@pm.me>2021-12-18 04:24:10 +0100
commit18494f66a7e0f4020cbc77374d4679421fcf469a (patch)
treecfd10fb71ca86f4d0580946cee2ccbc8c66dc634 /src/features
parentFix linter (diff)
downloadferdium-app-18494f66a7e0f4020cbc77374d4679421fcf469a.tar.gz
ferdium-app-18494f66a7e0f4020cbc77374d4679421fcf469a.tar.zst
ferdium-app-18494f66a7e0f4020cbc77374d4679421fcf469a.zip
Refactor autoUpdater usage
Diffstat (limited to 'src/features')
-rw-r--r--src/features/nightlyBuilds/Component.js142
-rw-r--r--src/features/nightlyBuilds/index.ts41
-rw-r--r--src/features/nightlyBuilds/store.ts7
3 files changed, 0 insertions, 190 deletions
diff --git a/src/features/nightlyBuilds/Component.js b/src/features/nightlyBuilds/Component.js
deleted file mode 100644
index 216e35f65..000000000
--- a/src/features/nightlyBuilds/Component.js
+++ /dev/null
@@ -1,142 +0,0 @@
1import { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer, inject } from 'mobx-react';
4import injectSheet from 'react-jss';
5import { defineMessages, injectIntl } from 'react-intl';
6import { H1 } from '../../components/ui/headline';
7
8import Modal from '../../components/ui/Modal';
9import Button from '../../components/ui/Button';
10import { state as ModalState } from './store';
11import SettingsStore from '../../stores/SettingsStore';
12import UIStore from '../../stores/UIStore';
13import UserStore from '../../stores/UserStore';
14import globalMessages from '../../i18n/globalMessages';
15
16const messages = defineMessages({
17 title: {
18 id: 'feature.nightlyBuilds.title',
19 defaultMessage: 'Nightly Builds',
20 },
21 info: {
22 id: 'feature.nightlyBuilds.info',
23 defaultMessage:
24 "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
25 },
26 activate: {
27 id: 'feature.nightlyBuilds.activate',
28 defaultMessage: 'Activate',
29 },
30});
31
32const styles = theme => ({
33 modal: {
34 width: '80%',
35 maxWidth: 600,
36 background: theme.styleTypes.primary.contrast,
37 paddingTop: 30,
38 },
39 info: {
40 paddingBottom: 20,
41 },
42 headline: {
43 fontSize: 20,
44 marginBottom: 20,
45 marginTop: -27,
46 },
47 buttonContainer: {
48 display: 'flex',
49 },
50 button: {
51 width: '50%',
52 marginTop: 10,
53 cursor: 'pointer',
54 },
55 activateButton: {
56 marginRight: 10,
57 background: '#c45a5a !important',
58 color: '#ffffff !important',
59 },
60});
61
62class NightlyBuildsModal extends Component {
63 close() {
64 ModalState.isModalVisible = false;
65
66 const { ui } = this.props.actions;
67 ui.openSettings({ path: 'app' });
68 }
69
70 activate() {
71 const { settings, user } = this.props.actions;
72
73 settings.update({
74 type: 'app',
75 data: {
76 nightly: true,
77 },
78 });
79 user.update({
80 userData: {
81 nightly: true,
82 },
83 });
84 this.close();
85 }
86
87 render() {
88 const { isModalVisible } = ModalState;
89
90 const { classes } = this.props;
91
92 const { intl } = this.props;
93
94 return (
95 <Modal
96 isOpen={isModalVisible}
97 className={`${classes.modal} nightly-builds`}
98 shouldCloseOnOverlayClick
99 close={this.close.bind(this)}
100 >
101 <H1 className={classes.headline}>
102 {intl.formatMessage(messages.title)}
103 </H1>
104
105 <p className={classes.info}>{intl.formatMessage(messages.info)}</p>
106
107 <div className={classes.buttonContainer}>
108 <Button
109 type="button"
110 label={intl.formatMessage(messages.activate)}
111 className={`${classes.button} ${classes.activateButton}`}
112 onClick={() => this.activate()}
113 />
114 <Button
115 type="button"
116 label={intl.formatMessage(globalMessages.cancel)}
117 className={classes.button}
118 onClick={() => this.close()}
119 />
120 </div>
121 </Modal>
122 );
123 }
124}
125
126NightlyBuildsModal.propTypes = {
127 stores: PropTypes.shape({
128 settings: PropTypes.instanceOf(SettingsStore).isRequired,
129 }).isRequired,
130 actions: PropTypes.shape({
131 settings: PropTypes.instanceOf(SettingsStore).isRequired,
132 user: PropTypes.instanceOf(UserStore).isRequired,
133 ui: PropTypes.instanceOf(UIStore).isRequired,
134 }).isRequired,
135 classes: PropTypes.object.isRequired,
136};
137
138export default injectIntl(
139 injectSheet(styles)(
140 inject('stores', 'actions')(observer(NightlyBuildsModal)),
141 ),
142);
diff --git a/src/features/nightlyBuilds/index.ts b/src/features/nightlyBuilds/index.ts
deleted file mode 100644
index 14afbaf1b..000000000
--- a/src/features/nightlyBuilds/index.ts
+++ /dev/null
@@ -1,41 +0,0 @@
1import { state as ModalState } from './store';
2
3export { default as Component } from './Component';
4
5const debug = require('debug')('Ferdi:feature:nightlyBuilds');
6
7const state = ModalState;
8
9export default function initialize() {
10 debug('Initialize nightlyBuilds feature');
11
12 function showModal() {
13 state.isModalVisible = true;
14 }
15
16 function toggleFeature() {
17 if (window['ferdi'].stores.settings.app.nightly) {
18 window['ferdi'].actions.settings.update({
19 type: 'app',
20 data: {
21 nightly: false,
22 },
23 });
24 window['ferdi'].actions.user.update({
25 userData: {
26 nightly: false,
27 },
28 });
29 } else {
30 // We need to close the settings, otherwise the modal will be drawn under the settings window
31 window['ferdi'].actions.ui.closeSettings();
32 showModal();
33 }
34 }
35
36 window['ferdi'].features.nightlyBuilds = {
37 state,
38 showModal,
39 toggleFeature,
40 };
41}
diff --git a/src/features/nightlyBuilds/store.ts b/src/features/nightlyBuilds/store.ts
deleted file mode 100644
index ed06e5a7d..000000000
--- a/src/features/nightlyBuilds/store.ts
+++ /dev/null
@@ -1,7 +0,0 @@
1import { observable } from 'mobx';
2
3const defaultState = {
4 isModalVisible: false,
5};
6
7export const state = observable(defaultState);