Browse Source

Update ui proxiwash settings go to general Settings

Remove proxiwash settings screen
move setings in setings screen
docjyJ 3 years ago
parent
commit
5b6176a361

+ 0
- 7
src/navigation/TabNavigator.js View File

29
   getWebsiteStack,
29
   getWebsiteStack,
30
 } from '../utils/CollapsibleUtils';
30
 } from '../utils/CollapsibleUtils';
31
 import Mascot, {MASCOT_STYLE} from '../components/Mascot/Mascot';
31
 import Mascot, {MASCOT_STYLE} from '../components/Mascot/Mascot';
32
-import ProxiwashSettingsScreen from '../screens/Proxiwash/ProxiwashSettingsScreen';
33
 
32
 
34
 const modalTransition =
33
 const modalTransition =
35
   Platform.OS === 'ios'
34
   Platform.OS === 'ios'
92
         ProxiwashAboutScreen,
91
         ProxiwashAboutScreen,
93
         i18n.t('screens.proxiwash.title'),
92
         i18n.t('screens.proxiwash.title'),
94
       )}
93
       )}
95
-      {createScreenCollapsibleStack(
96
-        'proxiwash-settings',
97
-        ProxiwashStack,
98
-        ProxiwashSettingsScreen,
99
-        i18n.t('screens.proxiwash.title'),
100
-      )}
101
     </ProxiwashStack.Navigator>
94
     </ProxiwashStack.Navigator>
102
   );
95
   );
103
 }
96
 }

+ 65
- 1
src/screens/Other/Settings/SettingsScreen.js View File

3
 import * as React from 'react';
3
 import * as React from 'react';
4
 import {View} from 'react-native';
4
 import {View} from 'react-native';
5
 import i18n from 'i18n-js';
5
 import i18n from 'i18n-js';
6
-import {Card, List, Switch, ToggleButton, withTheme} from 'react-native-paper';
6
+import {
7
+  RadioButton,
8
+  Card,
9
+  List,
10
+  Switch,
11
+  ToggleButton,
12
+  withTheme,
13
+} from 'react-native-paper';
7
 import {Appearance} from 'react-native-appearance';
14
 import {Appearance} from 'react-native-appearance';
8
 import {StackNavigationProp} from '@react-navigation/stack';
15
 import {StackNavigationProp} from '@react-navigation/stack';
9
 import type {CustomThemeType} from '../../../managers/ThemeManager';
16
 import type {CustomThemeType} from '../../../managers/ThemeManager';
12
 import CustomSlider from '../../../components/Overrides/CustomSlider';
19
 import CustomSlider from '../../../components/Overrides/CustomSlider';
13
 import CollapsibleScrollView from '../../../components/Collapsible/CollapsibleScrollView';
20
 import CollapsibleScrollView from '../../../components/Collapsible/CollapsibleScrollView';
14
 import type {ListIconPropsType} from '../../../constants/PaperStyles';
21
 import type {ListIconPropsType} from '../../../constants/PaperStyles';
22
+import {PROXIWASH_DATA} from '../../Proxiwash/ProxiwashAboutScreen';
15
 
23
 
16
 type PropsType = {
24
 type PropsType = {
17
   navigation: StackNavigationProp,
25
   navigation: StackNavigationProp,
22
   nightMode: boolean,
30
   nightMode: boolean,
23
   nightModeFollowSystem: boolean,
31
   nightModeFollowSystem: boolean,
24
   startScreenPickerSelected: string,
32
   startScreenPickerSelected: string,
33
+  selectedWash: string,
25
   isDebugUnlocked: boolean,
34
   isDebugUnlocked: boolean,
26
 };
35
 };
27
 
36
 
52
       startScreenPickerSelected: AsyncStorageManager.getString(
61
       startScreenPickerSelected: AsyncStorageManager.getString(
53
         AsyncStorageManager.PREFERENCES.defaultStartScreen.key,
62
         AsyncStorageManager.PREFERENCES.defaultStartScreen.key,
54
       ),
63
       ),
64
+      selectedWash: AsyncStorageManager.getString(
65
+        AsyncStorageManager.PREFERENCES.selectedWash.key,
66
+      ),
55
       isDebugUnlocked: AsyncStorageManager.getBool(
67
       isDebugUnlocked: AsyncStorageManager.getBool(
56
         AsyncStorageManager.PREFERENCES.debugUnlocked.key,
68
         AsyncStorageManager.PREFERENCES.debugUnlocked.key,
57
       ),
69
       ),
107
   }
119
   }
108
 
120
 
109
   /**
121
   /**
122
+   * Returns a radio picker allowing the user to select the proxiwash
123
+   *
124
+   * @returns {React.Node}
125
+   */
126
+  getProxiwashChangePicker(): React.Node {
127
+    const {selectedWash} = this.state;
128
+    return (
129
+      <RadioButton.Group
130
+        onValueChange={this.onSelectWashValueChange}
131
+        value={selectedWash}>
132
+        <RadioButton.Item
133
+          label={PROXIWASH_DATA.washinsa.title}
134
+          value={PROXIWASH_DATA.washinsa.id}
135
+        />
136
+        <RadioButton.Item
137
+          label={PROXIWASH_DATA.tripodeB.title}
138
+          value={PROXIWASH_DATA.tripodeB.id}
139
+        />
140
+      </RadioButton.Group>
141
+    );
142
+  }
143
+
144
+  /**
110
    * Returns a picker allowing the user to select the start screen
145
    * Returns a picker allowing the user to select the start screen
111
    *
146
    *
112
    * @returns {React.Node}
147
    * @returns {React.Node}
213
   }
248
   }
214
 
249
 
215
   /**
250
   /**
251
+   * Saves the value for the proxiwash selected wash
252
+   *
253
+   * @param value The value to store
254
+   */
255
+  onSelectWashValueChange = (value: string) => {
256
+    if (value != null) {
257
+      this.setState({selectedWash: value});
258
+      AsyncStorageManager.set(
259
+        AsyncStorageManager.PREFERENCES.selectedWash.key,
260
+        value,
261
+      );
262
+    }
263
+  };
264
+
265
+  /**
216
    * Unlocks debug mode and saves its state to user preferences
266
    * Unlocks debug mode and saves its state to user preferences
217
    */
267
    */
218
   unlockDebugMode = () => {
268
   unlockDebugMode = () => {
288
             <View style={{marginLeft: 30}}>
338
             <View style={{marginLeft: 30}}>
289
               {this.getProxiwashNotifPicker()}
339
               {this.getProxiwashNotifPicker()}
290
             </View>
340
             </View>
341
+            <List.Item
342
+              title="Test"
343
+              description="Test"
344
+              left={(props: ListIconPropsType): React.Node => (
345
+                <List.Icon
346
+                  color={props.color}
347
+                  style={props.style}
348
+                  icon="washing-machine"
349
+                />
350
+              )}
351
+            />
352
+            <View style={{marginLeft: 30}}>
353
+              {this.getProxiwashChangePicker()}
354
+            </View>
291
           </List.Section>
355
           </List.Section>
292
         </Card>
356
         </Card>
293
         <Card style={{margin: 5}}>
357
         <Card style={{margin: 5}}>

+ 61
- 1
src/screens/Proxiwash/ProxiwashAboutScreen.js View File

9
 
9
 
10
 const LOGO = 'https://etud.insa-toulouse.fr/~amicale_app/images/Proxiwash.png';
10
 const LOGO = 'https://etud.insa-toulouse.fr/~amicale_app/images/Proxiwash.png';
11
 
11
 
12
+export type LaverieType = {
13
+  id: string,
14
+  title: string,
15
+  subtitle: string,
16
+  description: string,
17
+  tarif: string,
18
+  paymentMethods: string,
19
+  icon: string,
20
+  url: string,
21
+};
22
+
23
+export const PROXIWASH_DATA = {
24
+  washinsa: {
25
+    id: 'washinsa',
26
+    title: i18n.t('screens.proxiwash.washinsa.title'),
27
+    subtitle: i18n.t('screens.proxiwash.washinsa.subtitle'),
28
+    description: i18n.t('screens.proxiwash.washinsa.description'),
29
+    tarif: i18n.t('screens.proxiwash.washinsa.tariff'),
30
+    paymentMethods: i18n.t('screens.proxiwash.washinsa.paymentMethods'),
31
+    icon: 'school-outline',
32
+    url:
33
+      'https://etud.insa-toulouse.fr/~amicale_app/v2/washinsa/washinsa_data.json',
34
+  },
35
+  tripodeB: {
36
+    id: 'tripodeB',
37
+    title: i18n.t('screens.proxiwash.tripodeB.title'),
38
+    subtitle: i18n.t('screens.proxiwash.tripodeB.subtitle'),
39
+    description: i18n.t('screens.proxiwash.tripodeB.description'),
40
+    tarif: i18n.t('screens.proxiwash.tripodeB.tariff'),
41
+    paymentMethods: i18n.t('screens.proxiwash.tripodeB.paymentMethods'),
42
+    icon: 'domain',
43
+    url:
44
+      'https://etud.insa-toulouse.fr/~amicale_app/v2/washinsa/tripode_b_data.json',
45
+  },
46
+};
47
+
12
 /**
48
 /**
13
  * Class defining the proxiwash about screen.
49
  * Class defining the proxiwash about screen.
14
  */
50
  */
15
-// eslint-disable-next-line react/prefer-stateless-function
16
 export default class ProxiwashAboutScreen extends React.Component<null> {
51
 export default class ProxiwashAboutScreen extends React.Component<null> {
52
+  static getCardItem(item: LaverieType): React.Node {
53
+    return (
54
+      <Card style={{margin: 5}}>
55
+        <Card.Title
56
+          title={item.title}
57
+          subtitle={item.subtitle}
58
+          left={(iconProps: CardTitleIconPropsType): React.Node => (
59
+            <Avatar.Icon size={iconProps.size} icon={item.icon} />
60
+          )}
61
+        />
62
+        <Card.Content>
63
+          <Paragraph>{item.description}</Paragraph>
64
+          <Title>{i18n.t('screens.proxiwash.tariffs')}</Title>
65
+          <Paragraph>{item.tarif}</Paragraph>
66
+          <Title>{i18n.t('screens.proxiwash.paymentMethods')}</Title>
67
+          <Paragraph>{item.paymentMethods}</Paragraph>
68
+        </Card.Content>
69
+      </Card>
70
+    );
71
+  }
72
+
17
   render(): React.Node {
73
   render(): React.Node {
18
     return (
74
     return (
19
       <CollapsibleScrollView style={{padding: 5}} hasTab>
75
       <CollapsibleScrollView style={{padding: 5}} hasTab>
32
           />
88
           />
33
         </View>
89
         </View>
34
 
90
 
91
+        {ProxiwashAboutScreen.getCardItem(PROXIWASH_DATA.washinsa)}
92
+
93
+        {ProxiwashAboutScreen.getCardItem(PROXIWASH_DATA.tripodeB)}
94
+
35
         <Card style={{margin: 5}}>
95
         <Card style={{margin: 5}}>
36
           <Card.Title
96
           <Card.Title
37
             title={i18n.t('screens.proxiwash.dryer')}
97
             title={i18n.t('screens.proxiwash.dryer')}

+ 1
- 15
src/screens/Proxiwash/ProxiwashScreen.js View File

27
 import MascotPopup from '../../components/Mascot/MascotPopup';
27
 import MascotPopup from '../../components/Mascot/MascotPopup';
28
 import type {SectionListDataType} from '../../components/Screens/WebSectionList';
28
 import type {SectionListDataType} from '../../components/Screens/WebSectionList';
29
 import type {ListIconPropsType} from '../../constants/PaperStyles';
29
 import type {ListIconPropsType} from '../../constants/PaperStyles';
30
-import {PROXIWASH_DATA} from './ProxiwashSettingsScreen';
30
+import {PROXIWASH_DATA} from './ProxiwashAboutScreen';
31
 
31
 
32
 const modalStateStrings = {};
32
 const modalStateStrings = {};
33
 
33
 
128
             iconName="information"
128
             iconName="information"
129
             onPress={this.onAboutPress}
129
             onPress={this.onAboutPress}
130
           />
130
           />
131
-          <Item
132
-            title="settings"
133
-            iconName="settings"
134
-            onPress={this.onSettingsPress}
135
-          />
136
         </MaterialHeaderButtons>
131
         </MaterialHeaderButtons>
137
       ),
132
       ),
138
     });
133
     });
148
   };
143
   };
149
 
144
 
150
   /**
145
   /**
151
-   * Callback used when pressing the settings button.
152
-   * This will open the ProxiwashSettingsScreen.
153
-   */
154
-  onSettingsPress = () => {
155
-    const {navigation} = this.props;
156
-    navigation.navigate('proxiwash-settings');
157
-  };
158
-
159
-  /**
160
    * Callback used when the user clicks on enable notifications for a machine
146
    * Callback used when the user clicks on enable notifications for a machine
161
    *
147
    *
162
    * @param machine The machine to set notifications for
148
    * @param machine The machine to set notifications for

+ 0
- 135
src/screens/Proxiwash/ProxiwashSettingsScreen.js View File

1
-// @flow
2
-
3
-import * as React from 'react';
4
-import {
5
-  Title,
6
-  Button,
7
-  Card,
8
-  Avatar,
9
-  withTheme,
10
-  Paragraph,
11
-} from 'react-native-paper';
12
-import i18n from 'i18n-js';
13
-import CollapsibleScrollView from '../../components/Collapsible/CollapsibleScrollView';
14
-import type {CardTitleIconPropsType} from '../../constants/PaperStyles';
15
-import AsyncStorageManager from '../../managers/AsyncStorageManager';
16
-import ThemeManager from '../../managers/ThemeManager';
17
-import type {CustomThemeType} from '../../managers/ThemeManager';
18
-
19
-export type LaverieType = {
20
-  id: string,
21
-  title: string,
22
-  subtitle: string,
23
-  description: string,
24
-  tarif: string,
25
-  paymentMethods: string,
26
-  icon: string,
27
-  url: string,
28
-};
29
-
30
-export const PROXIWASH_DATA = {
31
-  washinsa: {
32
-    id: 'washinsa',
33
-    title: i18n.t('screens.proxiwash.washinsa.title'),
34
-    subtitle: i18n.t('screens.proxiwash.washinsa.subtitle'),
35
-    description: i18n.t('screens.proxiwash.washinsa.description'),
36
-    tarif: i18n.t('screens.proxiwash.washinsa.tariff'),
37
-    paymentMethods: i18n.t('screens.proxiwash.washinsa.paymentMethods'),
38
-    icon: 'school-outline',
39
-    url:
40
-      'https://etud.insa-toulouse.fr/~amicale_app/v2/washinsa/washinsa_data.json',
41
-  },
42
-  tripodeB: {
43
-    id: 'tripodeB',
44
-    title: i18n.t('screens.proxiwash.tripodeB.title'),
45
-    subtitle: i18n.t('screens.proxiwash.tripodeB.subtitle'),
46
-    description: i18n.t('screens.proxiwash.tripodeB.description'),
47
-    tarif: i18n.t('screens.proxiwash.tripodeB.tariff'),
48
-    paymentMethods: i18n.t('screens.proxiwash.tripodeB.paymentMethods'),
49
-    icon: 'domain',
50
-    url:
51
-      'https://etud.insa-toulouse.fr/~amicale_app/v2/washinsa/tripode_b_data.json',
52
-  },
53
-};
54
-
55
-type StateType = {
56
-  selectedWash: string,
57
-  currentTheme: CustomThemeType,
58
-};
59
-
60
-/**
61
- * Class defining the proxiwash settings screen.
62
- */
63
-class ProxiwashSettingsScreen extends React.Component<null, StateType> {
64
-  constructor() {
65
-    super();
66
-    this.state = {
67
-      selectedWash: AsyncStorageManager.getString(
68
-        AsyncStorageManager.PREFERENCES.selectedWash.key,
69
-      ),
70
-    };
71
-  }
72
-
73
-  /**
74
-   * Saves the value for the proxiwash selected wash
75
-   *
76
-   * @param value The value to store
77
-   */
78
-  onSelectWashValueChange = (value: string) => {
79
-    if (value != null) {
80
-      this.setState({selectedWash: value});
81
-      AsyncStorageManager.set(
82
-        AsyncStorageManager.PREFERENCES.selectedWash.key,
83
-        value,
84
-      );
85
-    }
86
-  };
87
-
88
-  getCardItem(item: LaverieType): React.Node {
89
-    const {selectedWash} = this.state;
90
-    const onSelectWashValueChange = (): void =>
91
-      this.onSelectWashValueChange(item.id);
92
-    let cardStyle = {
93
-      margin: 5,
94
-    };
95
-    if (selectedWash === item.id) {
96
-      cardStyle = {
97
-        margin: 5,
98
-        backgroundColor: ThemeManager.getCurrentTheme().colors
99
-          .proxiwashUnknownColor,
100
-      };
101
-    }
102
-    return (
103
-      <Card style={cardStyle}>
104
-        <Card.Title
105
-          title={item.title}
106
-          subtitle={item.subtitle}
107
-          left={(iconProps: CardTitleIconPropsType): React.Node => (
108
-            <Avatar.Icon size={iconProps.size} icon={item.icon} />
109
-          )}
110
-        />
111
-        <Card.Content>
112
-          <Paragraph>{item.description}</Paragraph>
113
-          <Title>{i18n.t('screens.proxiwash.tariffs')}</Title>
114
-          <Paragraph>{item.tarif}</Paragraph>
115
-          <Title>{i18n.t('screens.proxiwash.paymentMethods')}</Title>
116
-          <Paragraph>{item.paymentMethods}</Paragraph>
117
-        </Card.Content>
118
-        <Card.Actions>
119
-          <Button onPress={onSelectWashValueChange}>Select</Button>
120
-        </Card.Actions>
121
-      </Card>
122
-    );
123
-  }
124
-
125
-  render(): React.Node {
126
-    return (
127
-      <CollapsibleScrollView style={{padding: 5}} hasTab>
128
-        {this.getCardItem(PROXIWASH_DATA.washinsa)}
129
-        {this.getCardItem(PROXIWASH_DATA.tripodeB)}
130
-      </CollapsibleScrollView>
131
-    );
132
-  }
133
-}
134
-
135
-export default withTheme(ProxiwashSettingsScreen);

Loading…
Cancel
Save