@umituz/react-native-settings 4.20.55 → 4.20.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +145 -3
- package/package.json +1 -2
- package/src/application/README.md +322 -0
- package/src/domains/about/README.md +452 -0
- package/src/domains/about/presentation/hooks/README.md +350 -0
- package/src/domains/appearance/README.md +596 -0
- package/src/domains/appearance/hooks/README.md +366 -0
- package/src/domains/appearance/infrastructure/services/README.md +455 -0
- package/src/domains/cloud-sync/README.md +451 -0
- package/src/domains/cloud-sync/presentation/components/README.md +493 -0
- package/src/domains/dev/README.md +477 -0
- package/src/domains/disclaimer/README.md +421 -0
- package/src/domains/disclaimer/presentation/components/README.md +394 -0
- package/src/domains/faqs/README.md +586 -0
- package/src/domains/feedback/README.md +565 -0
- package/src/domains/feedback/presentation/hooks/README.md +428 -0
- package/src/domains/legal/README.md +549 -0
- package/src/domains/rating/README.md +452 -0
- package/src/domains/rating/presentation/components/README.md +475 -0
- package/src/domains/video-tutorials/README.md +482 -0
- package/src/domains/video-tutorials/presentation/components/README.md +433 -0
- package/src/infrastructure/README.md +509 -0
- package/src/infrastructure/repositories/README.md +475 -0
- package/src/infrastructure/services/README.md +510 -0
- package/src/presentation/components/README.md +482 -0
- package/src/presentation/components/SettingsErrorBoundary/README.md +461 -0
- package/src/presentation/components/SettingsFooter/README.md +446 -0
- package/src/presentation/components/SettingsItemCard/README.md +457 -0
- package/src/presentation/components/SettingsSection/README.md +421 -0
- package/src/presentation/hooks/README.md +413 -0
- package/src/presentation/hooks/mutations/README.md +430 -0
- package/src/presentation/hooks/queries/README.md +441 -0
- package/src/presentation/navigation/README.md +532 -0
- package/src/presentation/navigation/components/README.md +330 -0
- package/src/presentation/navigation/hooks/README.md +399 -0
- package/src/presentation/navigation/utils/README.md +442 -0
- package/src/presentation/screens/README.md +525 -0
- package/src/presentation/screens/components/SettingsContent/README.md +404 -0
- package/src/presentation/screens/components/SettingsHeader/README.md +322 -0
- package/src/presentation/screens/components/sections/CustomSettingsList/README.md +388 -0
- package/src/presentation/screens/components/sections/FeatureSettingsSection/README.md +232 -0
- package/src/presentation/screens/components/sections/IdentitySettingsSection/README.md +325 -0
- package/src/presentation/screens/components/sections/ProfileSectionLoader/README.md +480 -0
- package/src/presentation/screens/components/sections/SupportSettingsSection/README.md +391 -0
- package/src/presentation/screens/hooks/README.md +383 -0
- package/src/presentation/screens/types/README.md +439 -0
- package/src/presentation/screens/utils/README.md +288 -0
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
# Support Settings Section
|
|
2
|
+
|
|
3
|
+
Section component that displays user support features including feedback, rating, and FAQs.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **Feedback System**: User feedback collection and submission
|
|
8
|
+
- **Rating System**: App rating and review functionality
|
|
9
|
+
- **FAQ Access**: Quick access to frequently asked questions
|
|
10
|
+
- **Modals**: Feedback modal with rating and description
|
|
11
|
+
- **Internationalization**: Full i18n support
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
This component is part of `@umituz/react-native-settings`.
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
### Basic Usage
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
import { SupportSettingsSection } from '@umituz/react-native-settings';
|
|
23
|
+
|
|
24
|
+
function MySettingsScreen() {
|
|
25
|
+
const normalizedConfig = {
|
|
26
|
+
feedback: { config: {} },
|
|
27
|
+
rating: { config: {} },
|
|
28
|
+
faqs: { config: {} },
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const features = {
|
|
32
|
+
feedback: true,
|
|
33
|
+
rating: true,
|
|
34
|
+
faqs: true,
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
return (
|
|
38
|
+
<SupportSettingsSection
|
|
39
|
+
normalizedConfig={normalizedConfig}
|
|
40
|
+
features={features}
|
|
41
|
+
/>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Props
|
|
47
|
+
|
|
48
|
+
### SupportSettingsSectionProps
|
|
49
|
+
|
|
50
|
+
| Prop | Type | Default | Description |
|
|
51
|
+
|------|------|---------|-------------|
|
|
52
|
+
| `normalizedConfig` | `NormalizedConfig` | **Required** | Normalized settings configuration |
|
|
53
|
+
| `features` | `FeatureFlags` | **Required** | Feature visibility flags |
|
|
54
|
+
|
|
55
|
+
### FeatureFlags
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
interface FeatureFlags {
|
|
59
|
+
feedback: boolean; // Show feedback option
|
|
60
|
+
rating: boolean; // Show rating option
|
|
61
|
+
faqs: boolean; // Show FAQ access
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Component Structure
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
SupportSettingsSection
|
|
69
|
+
└── SettingsSection "Support"
|
|
70
|
+
├── SupportSection
|
|
71
|
+
│ ├── Feedback Item (if features.feedback)
|
|
72
|
+
│ └── Rating Item (if features.rating)
|
|
73
|
+
└── FAQ Item (if features.faqs)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Examples
|
|
77
|
+
|
|
78
|
+
### All Support Features
|
|
79
|
+
|
|
80
|
+
```tsx
|
|
81
|
+
function FullSupportSettings() {
|
|
82
|
+
const normalizedConfig = {
|
|
83
|
+
feedback: {
|
|
84
|
+
config: {
|
|
85
|
+
title: 'Send Feedback',
|
|
86
|
+
description: 'Help us improve',
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
rating: {
|
|
90
|
+
config: {
|
|
91
|
+
title: 'Rate This App',
|
|
92
|
+
description: 'Love it? Rate us!',
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
faqs: {
|
|
96
|
+
config: {
|
|
97
|
+
title: 'Help & FAQs',
|
|
98
|
+
description: 'Find answers',
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
const features = {
|
|
104
|
+
feedback: true,
|
|
105
|
+
rating: true,
|
|
106
|
+
faqs: true,
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
return (
|
|
110
|
+
<SupportSettingsSection
|
|
111
|
+
normalizedConfig={normalizedConfig}
|
|
112
|
+
features={features}
|
|
113
|
+
/>
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Feedback Only
|
|
119
|
+
|
|
120
|
+
```tsx
|
|
121
|
+
function FeedbackOnlySettings() {
|
|
122
|
+
const features = {
|
|
123
|
+
feedback: true,
|
|
124
|
+
rating: false,
|
|
125
|
+
faqs: false,
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
return (
|
|
129
|
+
<SupportSettingsSection
|
|
130
|
+
normalizedConfig={{}}
|
|
131
|
+
features={features}
|
|
132
|
+
/>
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Custom Feedback Configuration
|
|
138
|
+
|
|
139
|
+
```tsx
|
|
140
|
+
function CustomFeedbackSettings() {
|
|
141
|
+
const normalizedConfig = {
|
|
142
|
+
feedback: {
|
|
143
|
+
config: {
|
|
144
|
+
title: 'Share Your Thoughts',
|
|
145
|
+
description: 'We value your feedback',
|
|
146
|
+
feedbackTypes: ['general', 'bug', 'feature'],
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
return (
|
|
152
|
+
<SupportSettingsSection
|
|
153
|
+
normalizedConfig={normalizedConfig}
|
|
154
|
+
features={{ feedback: true, rating: false, faqs: false }}
|
|
155
|
+
/>
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Sub-Components
|
|
161
|
+
|
|
162
|
+
### SupportSection
|
|
163
|
+
|
|
164
|
+
Wrapper component for feedback and rating items.
|
|
165
|
+
|
|
166
|
+
```tsx
|
|
167
|
+
<SupportSection
|
|
168
|
+
renderSection={(props) => <SettingsSection>{props.children}</SettingsSection>}
|
|
169
|
+
renderItem={(props) => <SettingsItemCard {...props} />}
|
|
170
|
+
feedbackConfig={{
|
|
171
|
+
enabled: true,
|
|
172
|
+
config: {
|
|
173
|
+
title: 'Send Feedback',
|
|
174
|
+
description: 'Tell us what you think',
|
|
175
|
+
},
|
|
176
|
+
}}
|
|
177
|
+
ratingConfig={{
|
|
178
|
+
enabled: true,
|
|
179
|
+
config: {
|
|
180
|
+
title: 'Rate Us',
|
|
181
|
+
description: '5 stars would be great!',
|
|
182
|
+
},
|
|
183
|
+
}}
|
|
184
|
+
/>
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### SupportSection Props
|
|
188
|
+
|
|
189
|
+
| Prop | Type | Description |
|
|
190
|
+
|------|------|-------------|
|
|
191
|
+
| `renderSection` | `(props) => ReactNode` | Section renderer |
|
|
192
|
+
| `renderItem` | `(props) => ReactNode` | Item renderer |
|
|
193
|
+
| `feedbackConfig` | `FeedbackConfig` | Feedback configuration |
|
|
194
|
+
| `ratingConfig` | `RatingConfig` | Rating configuration |
|
|
195
|
+
|
|
196
|
+
### FeedbackModalTexts
|
|
197
|
+
|
|
198
|
+
Configuration for feedback modal texts:
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
interface FeedbackModalTexts {
|
|
202
|
+
title: string;
|
|
203
|
+
ratingLabel: string;
|
|
204
|
+
descriptionPlaceholder: string;
|
|
205
|
+
submitButton: string;
|
|
206
|
+
submittingButton: string;
|
|
207
|
+
feedbackTypes: Array<{
|
|
208
|
+
type: FeedbackType;
|
|
209
|
+
label: string;
|
|
210
|
+
}>;
|
|
211
|
+
defaultTitle: (type) => string;
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Feedback Configuration
|
|
216
|
+
|
|
217
|
+
```typescript
|
|
218
|
+
interface FeedbackConfig {
|
|
219
|
+
enabled: boolean;
|
|
220
|
+
config?: {
|
|
221
|
+
title?: string;
|
|
222
|
+
description?: string;
|
|
223
|
+
feedbackTypes?: FeedbackType[];
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Rating Configuration
|
|
229
|
+
|
|
230
|
+
```typescript
|
|
231
|
+
interface RatingConfig {
|
|
232
|
+
enabled: boolean;
|
|
233
|
+
config?: {
|
|
234
|
+
title?: string;
|
|
235
|
+
description?: string;
|
|
236
|
+
storeUrl?: string;
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### FAQ Configuration
|
|
242
|
+
|
|
243
|
+
```typescript
|
|
244
|
+
interface FAQConfig {
|
|
245
|
+
enabled: boolean;
|
|
246
|
+
config?: {
|
|
247
|
+
title?: string;
|
|
248
|
+
description?: string;
|
|
249
|
+
categories?: FAQCategory[];
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
## Internationalization
|
|
255
|
+
|
|
256
|
+
Translation keys used:
|
|
257
|
+
|
|
258
|
+
```typescript
|
|
259
|
+
// Section
|
|
260
|
+
t("settings.support.title")
|
|
261
|
+
|
|
262
|
+
// Feedback
|
|
263
|
+
t("settings.feedback.title")
|
|
264
|
+
t("settings.feedback.description")
|
|
265
|
+
t("settings.feedback.modal.title")
|
|
266
|
+
t("settings.feedback.modal.ratingLabel")
|
|
267
|
+
t("settings.feedback.modal.descriptionPlaceholder")
|
|
268
|
+
t("settings.feedback.modal.submitButton")
|
|
269
|
+
t("settings.feedback.modal.submittingButton")
|
|
270
|
+
|
|
271
|
+
// Feedback Types
|
|
272
|
+
t("settings.feedback.types.general")
|
|
273
|
+
t("settings.feedback.types.bugReport")
|
|
274
|
+
t("settings.feedback.types.featureRequest")
|
|
275
|
+
t("settings.feedback.types.improvement")
|
|
276
|
+
t("settings.feedback.types.other")
|
|
277
|
+
|
|
278
|
+
// Rating
|
|
279
|
+
t("settings.rating.title")
|
|
280
|
+
t("settings.rating.description")
|
|
281
|
+
|
|
282
|
+
// FAQ
|
|
283
|
+
t("settings.faqs.title")
|
|
284
|
+
t("settings.faqs.description")
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
## Examples
|
|
288
|
+
|
|
289
|
+
### With Store Rating
|
|
290
|
+
|
|
291
|
+
```tsx
|
|
292
|
+
function StoreRatingSupport() {
|
|
293
|
+
const config = {
|
|
294
|
+
rating: {
|
|
295
|
+
config: {
|
|
296
|
+
title: 'Rate Us on App Store',
|
|
297
|
+
description: 'Your feedback helps us improve',
|
|
298
|
+
storeUrl: 'https://apps.apple.com/app/id123',
|
|
299
|
+
},
|
|
300
|
+
},
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
return (
|
|
304
|
+
<SupportSettingsSection
|
|
305
|
+
normalizedConfig={config}
|
|
306
|
+
features={{ rating: true }}
|
|
307
|
+
/>
|
|
308
|
+
);
|
|
309
|
+
}
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### Custom Feedback Types
|
|
313
|
+
|
|
314
|
+
```tsx
|
|
315
|
+
function CustomFeedbackTypes() {
|
|
316
|
+
const config = {
|
|
317
|
+
feedback: {
|
|
318
|
+
config: {
|
|
319
|
+
feedbackTypes: ['bug_report', 'feature_request', 'ui_issue'],
|
|
320
|
+
},
|
|
321
|
+
},
|
|
322
|
+
};
|
|
323
|
+
|
|
324
|
+
return (
|
|
325
|
+
<SupportSettingsSection
|
|
326
|
+
normalizedConfig={config}
|
|
327
|
+
features={{ feedback: true }}
|
|
328
|
+
/>
|
|
329
|
+
);
|
|
330
|
+
}
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### With FAQ Categories
|
|
334
|
+
|
|
335
|
+
```tsx
|
|
336
|
+
function FAQWithCategories() {
|
|
337
|
+
const config = {
|
|
338
|
+
faqs: {
|
|
339
|
+
config: {
|
|
340
|
+
categories: [
|
|
341
|
+
{
|
|
342
|
+
id: 'getting-started',
|
|
343
|
+
title: 'Getting Started',
|
|
344
|
+
questions: [
|
|
345
|
+
{ id: 'q1', question: 'How to begin?', answer: '...' },
|
|
346
|
+
],
|
|
347
|
+
},
|
|
348
|
+
],
|
|
349
|
+
},
|
|
350
|
+
},
|
|
351
|
+
};
|
|
352
|
+
|
|
353
|
+
return (
|
|
354
|
+
<SupportSettingsSection
|
|
355
|
+
normalizedConfig={config}
|
|
356
|
+
features={{ faqs: true }}
|
|
357
|
+
/>
|
|
358
|
+
);
|
|
359
|
+
}
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
## Navigation
|
|
363
|
+
|
|
364
|
+
FAQ navigation handler:
|
|
365
|
+
|
|
366
|
+
```tsx
|
|
367
|
+
const handleFAQPress = useCallback(() => {
|
|
368
|
+
navigation.navigate("FAQ");
|
|
369
|
+
}, [navigation]);
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
## Best Practices
|
|
373
|
+
|
|
374
|
+
1. **User Feedback**: Always provide feedback option
|
|
375
|
+
2. **Rating Prompt**: Show rating prompt at appropriate times
|
|
376
|
+
3. **FAQ Access**: Make FAQs easily accessible
|
|
377
|
+
4. **Modal Design**: Keep feedback modal simple and clear
|
|
378
|
+
5. **Feedback Types**: Provide relevant feedback categories
|
|
379
|
+
6. **Thank Users**: Always thank users for feedback
|
|
380
|
+
7. **Follow Up**: Consider providing support contact
|
|
381
|
+
|
|
382
|
+
## Related
|
|
383
|
+
|
|
384
|
+
- **Feedback Domain**: Feedback system components
|
|
385
|
+
- **Rating Domain**: Rating components
|
|
386
|
+
- **FAQs Domain**: FAQ system
|
|
387
|
+
- **Support Section**: Support components
|
|
388
|
+
|
|
389
|
+
## License
|
|
390
|
+
|
|
391
|
+
MIT
|