added legal information
parent
5c8a07ffcb
commit
01c178593d
28
App.js
28
App.js
|
@ -25,10 +25,6 @@ import ChooseSceneModalContent from "./src/Screens/Device/modals/ChooseScene";
|
||||||
import CreateSceneModalContent from "./src/Screens/Device/modals/ChooseScene/CreateScene";
|
import CreateSceneModalContent from "./src/Screens/Device/modals/ChooseScene/CreateScene";
|
||||||
import AddSceneActionModalContent from "./src/Screens/Device/modals/AddSceneAction";
|
import AddSceneActionModalContent from "./src/Screens/Device/modals/AddSceneAction";
|
||||||
import LayerSelectionModalContent from "./src/Screens/Device/modals/AddSceneAction/LayerSelection";
|
import LayerSelectionModalContent from "./src/Screens/Device/modals/AddSceneAction/LayerSelection";
|
||||||
import {
|
|
||||||
SettingsAppColorSchemeModalContent,
|
|
||||||
SettingsAppLanguageModalContent,
|
|
||||||
} from "./src/Screens/Settings";
|
|
||||||
import UpdateSceneNameModalContent from "./src/Screens/Device/modals/UpdateSceneName";
|
import UpdateSceneNameModalContent from "./src/Screens/Device/modals/UpdateSceneName";
|
||||||
import SettingsChangeDeviceDisplayNameModalContent from "./src/Screens/Device/modals/SettingsChangeDeviceDisplayName";
|
import SettingsChangeDeviceDisplayNameModalContent from "./src/Screens/Device/modals/SettingsChangeDeviceDisplayName";
|
||||||
import LightsEditActionModalContent, {
|
import LightsEditActionModalContent, {
|
||||||
|
@ -45,6 +41,9 @@ import HelpCenterModalContent from "./src/Screens/Help/modals/HelpCenter";
|
||||||
import { FeedbackStepsModalContent } from "./src/Screens/Help/modals/Feedback/steps";
|
import { FeedbackStepsModalContent } from "./src/Screens/Help/modals/Feedback/steps";
|
||||||
import GiveFeedbackModalContent from "./src/Screens/Help/modals/Feedback";
|
import GiveFeedbackModalContent from "./src/Screens/Help/modals/Feedback";
|
||||||
import FeedbackFinishedModalContent from "./src/Screens/Help/modals/Feedback/finished";
|
import FeedbackFinishedModalContent from "./src/Screens/Help/modals/Feedback/finished";
|
||||||
|
import SettingsAppColorSchemeModalContent from "./src/Screens/Settings/modals/appColorScheme";
|
||||||
|
import SettingsAppLanguageModalContent from "./src/Screens/Settings/modals/appLanguage";
|
||||||
|
import OpenSourceLicensesModalContent from "./src/Screens/Settings/modals/openSourceLicences";
|
||||||
|
|
||||||
const Drawer = createDrawerNavigator();
|
const Drawer = createDrawerNavigator();
|
||||||
const Stack = createStackNavigator();
|
const Stack = createStackNavigator();
|
||||||
|
@ -332,7 +331,9 @@ export function MyApp() {
|
||||||
options={({ navigation }) =>
|
options={({ navigation }) =>
|
||||||
options({
|
options({
|
||||||
navigation: navigation,
|
navigation: navigation,
|
||||||
pageTitle: t("screens.settings.appColorSchemeModalTitle"),
|
pageTitle: t(
|
||||||
|
"screens.settings.cardGeneral.modalAppColorSchemePicker.pageTitle"
|
||||||
|
),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
@ -343,7 +344,22 @@ export function MyApp() {
|
||||||
options={({ navigation }) =>
|
options={({ navigation }) =>
|
||||||
options({
|
options({
|
||||||
navigation: navigation,
|
navigation: navigation,
|
||||||
pageTitle: t("screens.settings.languageModalTitle"),
|
pageTitle: t(
|
||||||
|
"screens.settings.cardGeneral.modalLanguagePageTitle"
|
||||||
|
),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Stack.Screen
|
||||||
|
name="modalOpenSourceLicences"
|
||||||
|
component={OpenSourceLicensesModalContent}
|
||||||
|
options={({ navigation }) =>
|
||||||
|
options({
|
||||||
|
navigation: navigation,
|
||||||
|
pageTitle: t(
|
||||||
|
"screens.settings.modalOpenSourceLicences.pageTitle"
|
||||||
|
),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -230,18 +230,29 @@
|
||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
"pageTitle": "Einstellungen",
|
"pageTitle": "Einstellungen",
|
||||||
"settingsCardTitle": "Allgemein",
|
"cardGeneral": {
|
||||||
"languageText": "Sprache",
|
"cardTitle": "Allgemein",
|
||||||
"languageModalTitle": "Sprache ändern",
|
"languageText": "Sprache",
|
||||||
"appColorSchemeText": "Anzeigemodus",
|
"modalLanguagePageTitle": "Sprache ändern",
|
||||||
"appColorSchemeModalTitle": "Anzeigemodus ändern",
|
"appColorSchemeText": "Anzeigemodus",
|
||||||
"appColorSchemePicker": {
|
"modalAppColorSchemePicker": {
|
||||||
"auto": "System Standard",
|
"pageTitle": "Anzeigemodus ändern",
|
||||||
"dark": "Dunkel",
|
"auto": "System Standard",
|
||||||
"light": "Hell"
|
"dark": "Dunkel",
|
||||||
|
"light": "Hell"
|
||||||
|
},
|
||||||
|
"expertModeTitle": "Experten Modus",
|
||||||
|
"expertModeDescription": "Durch das Einschalten werden zusätzliche Funktionen in der App freigeschaltet, wie beispielsweise die Möglichkeit, benutzerdefinierte Farbcodes anzugeben."
|
||||||
},
|
},
|
||||||
"expertModeTitle": "Experten Modus",
|
"cardLegalInformation": {
|
||||||
"expertModeDescription": "Durch das Einschalten werden zusätzliche Funktionen in der App freigeschaltet, wie beispielsweise die Möglichkeit, benutzerdefinierte Farbcodes anzugeben."
|
"cardTitle": "Rechtliche Informationen",
|
||||||
|
"openSourceLicences": "Open Source Lizenzen",
|
||||||
|
"termsOfService": "Nutzungsbedingungen",
|
||||||
|
"privacyPolicy": "Datenschutzerklärung"
|
||||||
|
},
|
||||||
|
"modalOpenSourceLicences": {
|
||||||
|
"pageTitle": "Open Source Lizenzen"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"modalSearchForNewDevices": {
|
"modalSearchForNewDevices": {
|
||||||
"pageTitle": "Suche nach Geräten",
|
"pageTitle": "Suche nach Geräten",
|
||||||
|
|
|
@ -224,18 +224,29 @@
|
||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
"pageTitle": "Settings",
|
"pageTitle": "Settings",
|
||||||
"settingsCardTitle": "General",
|
"cardGeneral": {
|
||||||
"languageText": "Language",
|
"cardTitle": "General",
|
||||||
"languageModalTitle": "Customize language",
|
"languageText": "Language",
|
||||||
"appColorSchemeText": "Appearance",
|
"modalLanguagePageTitle": "Customize language",
|
||||||
"appColorSchemeModalTitle": "Customize appearance",
|
"appColorSchemeText": "Appearance",
|
||||||
"appColorSchemePicker": {
|
"modalAppColorSchemePicker": {
|
||||||
"auto": "System default",
|
"pageTitle": "Customize appearance",
|
||||||
"dark": "Dark",
|
"auto": "System default",
|
||||||
"light": "Light"
|
"dark": "Dark",
|
||||||
|
"light": "Light"
|
||||||
|
},
|
||||||
|
"expertModeTitle": "Expert mode",
|
||||||
|
"expertModeDescription": "Turning it on unlocks additional features in the app, such as the ability to specify custom color codes."
|
||||||
},
|
},
|
||||||
"expertModeTitle": "Expert mode",
|
"cardLegalInformation": {
|
||||||
"expertModeDescription": "Turning it on unlocks additional features in the app, such as the ability to specify custom color codes."
|
"cardTitle": "Legal information",
|
||||||
|
"openSourceLicences": "Open-source licenses",
|
||||||
|
"termsOfService": "Terms of service",
|
||||||
|
"privacyPolicy": "Privacy policy"
|
||||||
|
},
|
||||||
|
"modalOpenSourceLicences": {
|
||||||
|
"pageTitle": "Open-source licenses"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"modalSearchForNewDevices": {
|
"modalSearchForNewDevices": {
|
||||||
"pageTitle": "Search for devices",
|
"pageTitle": "Search for devices",
|
||||||
|
|
|
@ -15,6 +15,7 @@ export function AccordionItem({
|
||||||
appContext,
|
appContext,
|
||||||
title,
|
title,
|
||||||
description,
|
description,
|
||||||
|
customDescriptionComponent,
|
||||||
cardTopicText,
|
cardTopicText,
|
||||||
disablePaddingBottom,
|
disablePaddingBottom,
|
||||||
}) {
|
}) {
|
||||||
|
@ -54,7 +55,10 @@ export function AccordionItem({
|
||||||
cardTopicText={cardTopicText}
|
cardTopicText={cardTopicText}
|
||||||
disablePaddingBottom={disablePaddingBottom}
|
disablePaddingBottom={disablePaddingBottom}
|
||||||
>
|
>
|
||||||
<TouchableOpacity activeOpacity={0.7} onPress={toggleExpanded}>
|
<TouchableOpacity
|
||||||
|
activeOpacity={appContext.appTheme.touchableOpacity.activeOpacity}
|
||||||
|
onPress={toggleExpanded}
|
||||||
|
>
|
||||||
<View
|
<View
|
||||||
style={{
|
style={{
|
||||||
flexDirection: "row",
|
flexDirection: "row",
|
||||||
|
@ -80,7 +84,7 @@ export function AccordionItem({
|
||||||
</View>
|
</View>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
|
|
||||||
<Animated.View style={[{ overflow: "hidden", marginTop: 6 }, bodyHeight]}>
|
<Animated.View style={[{ overflow: "hidden" }, bodyHeight]}>
|
||||||
<View
|
<View
|
||||||
style={{
|
style={{
|
||||||
position: "absolute",
|
position: "absolute",
|
||||||
|
@ -91,14 +95,20 @@ export function AccordionItem({
|
||||||
setBodySectionHeight(event.nativeEvent.layout.height)
|
setBodySectionHeight(event.nativeEvent.layout.height)
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
<Text
|
<View style={{ marginTop: 10 }}>
|
||||||
style={[
|
{customDescriptionComponent ? (
|
||||||
{ color: appContext.appTheme.textSecondary },
|
customDescriptionComponent
|
||||||
AppStyles.typography14,
|
) : (
|
||||||
]}
|
<Text
|
||||||
>
|
style={[
|
||||||
{description}
|
{ color: appContext.appTheme.textSecondary },
|
||||||
</Text>
|
AppStyles.typography14,
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
{description}
|
||||||
|
</Text>
|
||||||
|
)}
|
||||||
|
</View>
|
||||||
</View>
|
</View>
|
||||||
</Animated.View>
|
</Animated.View>
|
||||||
</Card>
|
</Card>
|
||||||
|
|
|
@ -10,6 +10,8 @@ export default function Card({
|
||||||
cardTopicText,
|
cardTopicText,
|
||||||
cardBackgroundColor,
|
cardBackgroundColor,
|
||||||
disablePaddingBottom,
|
disablePaddingBottom,
|
||||||
|
contentPaddingTop,
|
||||||
|
contentPaddingBottom,
|
||||||
}) {
|
}) {
|
||||||
const appContext = useContext(AppContext);
|
const appContext = useContext(AppContext);
|
||||||
|
|
||||||
|
@ -44,7 +46,12 @@ export default function Card({
|
||||||
style={[
|
style={[
|
||||||
{
|
{
|
||||||
backgroundColor: backgroundColor,
|
backgroundColor: backgroundColor,
|
||||||
padding: 20,
|
paddingLeft: 20,
|
||||||
|
paddingRight: 20,
|
||||||
|
paddingTop:
|
||||||
|
contentPaddingTop === undefined ? 20 : contentPaddingTop,
|
||||||
|
paddingBottom:
|
||||||
|
contentPaddingBottom === undefined ? 20 : contentPaddingBottom,
|
||||||
},
|
},
|
||||||
AppStyles.Shadow,
|
AppStyles.Shadow,
|
||||||
AppStyles.card,
|
AppStyles.card,
|
||||||
|
|
|
@ -1,22 +1,10 @@
|
||||||
import { useContext, useRef, useState } from "react";
|
import { useContext } from "react";
|
||||||
import {
|
import { StyleSheet, TouchableHighlight, View } from "react-native";
|
||||||
Pressable,
|
import Animated, { useSharedValue } from "react-native-reanimated";
|
||||||
StyleSheet,
|
|
||||||
TouchableHighlight,
|
|
||||||
TouchableOpacity,
|
|
||||||
View,
|
|
||||||
} from "react-native";
|
|
||||||
import Animated, {
|
|
||||||
useAnimatedStyle,
|
|
||||||
useSharedValue,
|
|
||||||
} from "react-native-reanimated";
|
|
||||||
import ColorPicker, {
|
import ColorPicker, {
|
||||||
BrightnessSlider,
|
|
||||||
InputWidget,
|
InputWidget,
|
||||||
OpacitySlider,
|
OpacitySlider,
|
||||||
Panel3,
|
Panel3,
|
||||||
Swatches,
|
|
||||||
ColorPickerRef,
|
|
||||||
} from "reanimated-color-picker";
|
} from "reanimated-color-picker";
|
||||||
import MyIcon from "../Icon";
|
import MyIcon from "../Icon";
|
||||||
import { AppContext, AppStyles, VibrateShort } from "../../utils";
|
import { AppContext, AppStyles, VibrateShort } from "../../utils";
|
||||||
|
|
|
@ -150,7 +150,7 @@ export default function LightsEditActionModalContent({ navigation, route }) {
|
||||||
<ScrollView>
|
<ScrollView>
|
||||||
<Card disablePaddingBottom>
|
<Card disablePaddingBottom>
|
||||||
<MyDropdown
|
<MyDropdown
|
||||||
style={{ marginBottom: 2 }}
|
style={{ marginBottom: 4 }}
|
||||||
label={t(
|
label={t(
|
||||||
"screens.device.scenes.editActions.modalLightsEditAction.dropdownColorModeSelection.label"
|
"screens.device.scenes.editActions.modalLightsEditAction.dropdownColorModeSelection.label"
|
||||||
)}
|
)}
|
||||||
|
@ -173,31 +173,19 @@ export default function LightsEditActionModalContent({ navigation, route }) {
|
||||||
<>
|
<>
|
||||||
{lightModeDefaultColors.length > 0 && (
|
{lightModeDefaultColors.length > 0 && (
|
||||||
<>
|
<>
|
||||||
<View
|
<Text
|
||||||
style={{
|
style={[
|
||||||
flexDirection: "row",
|
AppStyles.typography14,
|
||||||
justifyContent: "space-between",
|
{
|
||||||
alignItems: "center",
|
marginBottom: 4,
|
||||||
marginTop: 2,
|
color: appContext.appTheme.text,
|
||||||
}}
|
},
|
||||||
|
]}
|
||||||
>
|
>
|
||||||
<Text
|
{t(
|
||||||
style={[
|
"screens.device.scenes.editActions.modalLightsEditAction.modeSpecificColors"
|
||||||
AppStyles.typography14,
|
)}
|
||||||
{
|
</Text>
|
||||||
marginTop: 4,
|
|
||||||
marginBottom: 4,
|
|
||||||
color: appContext.appTheme.text,
|
|
||||||
},
|
|
||||||
]}
|
|
||||||
>
|
|
||||||
{t(
|
|
||||||
"screens.device.scenes.editActions.modalLightsEditAction.modeSpecificColors"
|
|
||||||
)}
|
|
||||||
</Text>
|
|
||||||
|
|
||||||
<MyIconButton iconName="restore" iconSize={24} />
|
|
||||||
</View>
|
|
||||||
|
|
||||||
<View
|
<View
|
||||||
style={{
|
style={{
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { useContext } from "react";
|
import { useContext } from "react";
|
||||||
import { AppContext, AppStyles, Constants } from "../../utils";
|
import { AppContext, AppStyles, Constants, OpenUrl } from "../../utils";
|
||||||
import { Linking, Text, View } from "react-native";
|
import { Text, View } from "react-native";
|
||||||
import MyIcon from "../../Components/Icon";
|
import MyIcon from "../../Components/Icon";
|
||||||
import { MyPickerModalListItem } from "../../Components/Modal";
|
import { MyPickerModalListItem } from "../../Components/Modal";
|
||||||
import { MyTextButton } from "../../Components/Button";
|
import { MyTextButton } from "../../Components/Button";
|
||||||
|
@ -48,7 +48,7 @@ export default function HelpScreen({ navigation }) {
|
||||||
actionColor
|
actionColor
|
||||||
textSelectable
|
textSelectable
|
||||||
onPress={() =>
|
onPress={() =>
|
||||||
Linking.openURL(`mailto:${Constants.globals.contact_us_email}`)
|
OpenUrl(`mailto:${Constants.globals.contact_us_email}`)
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
|
|
|
@ -138,7 +138,7 @@ export function FeedbackStepsModalContent({ navigation }) {
|
||||||
? appContext.appTheme.colors.primary
|
? appContext.appTheme.colors.primary
|
||||||
: appContext.appTheme.colors.gray
|
: appContext.appTheme.colors.gray
|
||||||
}
|
}
|
||||||
activeOpacity={0.7}
|
activeOpacity={appContext.appTheme.touchableOpacity.activeOpacity}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,153 +4,22 @@ import {
|
||||||
AppContext,
|
AppContext,
|
||||||
AppStyles,
|
AppStyles,
|
||||||
Constants,
|
Constants,
|
||||||
|
HelpCenterDeQuestionsAnswers,
|
||||||
|
HelpCenterEnQuestionsAnswers,
|
||||||
ModalContainer,
|
ModalContainer,
|
||||||
} from "../../../../utils";
|
} from "../../../../utils";
|
||||||
import { useContext } from "react";
|
import { useContext } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { InfoHeader } from "../..";
|
import { InfoHeader } from "../..";
|
||||||
|
|
||||||
const helpDataDe = [
|
|
||||||
{
|
|
||||||
topicText: "Allgemeine Fragen",
|
|
||||||
question:
|
|
||||||
"Was ist die grundlegende Funktionalität der Handy-App zur Gerätesteuerung?",
|
|
||||||
answer:
|
|
||||||
"Die Handy-App ermöglicht es Ihnen, kompatible Geräte über Ihr Smartphone oder Tablet zu steuern. Sie können verschiedene Funktionen aktivieren, Einstellungen ändern und Aktionen aus der Ferne ausführen.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
question: "Welche Arten von Geräten können über die App gesteuert werden?",
|
|
||||||
answer:
|
|
||||||
"Unsere App unterstützt eine Vielzahl von Geräten, darunter Smart-Home-Geräte, Unterhaltungselektronik, Haushaltsgeräte und mehr.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
question: "Ist die App für Android- und iOS-Geräte verfügbar?",
|
|
||||||
answer:
|
|
||||||
"Ja, die App ist sowohl für Android- als auch für iOS-Geräte verfügbar. Sie können sie im Google Play Store bzw. im Apple App Store herunterladen.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
question: "Wo kann ich die App herunterladen?",
|
|
||||||
answer:
|
|
||||||
"Sie können die App direkt aus dem Google Play Store (für Android) oder dem Apple App Store (für iOS) herunterladen und installieren.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
question:
|
|
||||||
"Benötige ich eine Internetverbindung, um das Gerät über die App zu steuern?",
|
|
||||||
answer:
|
|
||||||
"Ja, eine aktive Internetverbindung (Wi-Fi oder mobile Daten) ist erforderlich, um die App mit dem Gerät zu verbinden und die Steuerungsfunktionen zu nutzen.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
question: "Unterstützt die App mehrere Geräte gleichzeitig?",
|
|
||||||
answer:
|
|
||||||
"Ja, die App ermöglicht es Ihnen, mehrere kompatible Geräte gleichzeitig zu steuern und zwischen ihnen zu wechseln.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
topicText: "Einrichtung und Verbindung",
|
|
||||||
question:
|
|
||||||
"Wie richte ich die Verbindung zwischen der App und meinem Gerät ein?",
|
|
||||||
answer:
|
|
||||||
"Die genaue Einrichtung kann je nach Gerät variieren, aber normalerweise müssen Sie die App öffnen, das Gerät auswählen und den Anweisungen auf dem Bildschirm folgen, um die Verbindung herzustellen.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
question:
|
|
||||||
"Welche Schritte sind erforderlich, um das Gerät zum ersten Mal mit der App zu verbinden?",
|
|
||||||
answer:
|
|
||||||
"Starten Sie die App, erstellen Sie ein Konto (falls erforderlich), fügen Sie das Gerät hinzu, indem Sie es aus der Liste der verfügbaren Geräte auswählen, und folgen Sie den Anweisungen zur Verbindungsherstellung.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
question:
|
|
||||||
"Benötige ich spezielle Einstellungen am Gerät, um die Verbindung herzustellen?",
|
|
||||||
answer:
|
|
||||||
"Ja, in den meisten Fällen müssen Sie sicherstellen, dass das Gerät eingeschaltet und im Verbindungsmodus ist, bevor Sie versuchen, es über die App zu verbinden.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
question:
|
|
||||||
"Welche Arten von Verbindungsmethoden werden von der App unterstützt (z. B. Bluetooth, WLAN, etc.)?",
|
|
||||||
answer:
|
|
||||||
"Unsere App unterstützt in der Regel WLAN-Verbindungen, um eine stabile und zuverlässige Steuerung über größere Entfernungen zu ermöglichen.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
question:
|
|
||||||
"Was sollte ich tun, wenn die Verbindung zwischen der App und dem Gerät verloren geht?",
|
|
||||||
answer:
|
|
||||||
"Überprüfen Sie zuerst Ihre Internetverbindung. Wenn das Problem weiterhin besteht, können Sie versuchen, das Gerät aus der App zu entfernen und erneut hinzuzufügen. Gegebenenfalls kann ein Neustart des Geräts helfen.",
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
const helpDataEn = [
|
|
||||||
{
|
|
||||||
topicText: "General Questions",
|
|
||||||
question:
|
|
||||||
"What is the basic functionality of the mobile app for device control?",
|
|
||||||
answer:
|
|
||||||
"The mobile app allows you to control compatible devices using your smartphone or tablet. You can activate various functions, change settings, and perform actions remotely.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
question: "What types of devices can be controlled through the app?",
|
|
||||||
answer:
|
|
||||||
"Our app supports a variety of devices, including smart home devices, entertainment electronics, household appliances, and more.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
question: "Is the app available for both Android and iOS devices?",
|
|
||||||
answer:
|
|
||||||
"Yes, the app is available for both Android and iOS devices. You can download it from the Google Play Store or the Apple App Store.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
question: "Where can I download the app?",
|
|
||||||
answer:
|
|
||||||
"You can download and install the app directly from the Google Play Store (for Android) or the Apple App Store (for iOS).",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
question:
|
|
||||||
"Do I need an internet connection to control the device through the app?",
|
|
||||||
answer:
|
|
||||||
"Yes, an active internet connection (Wi-Fi or mobile data) is required to connect the app to the device and use the control functions.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
question: "Does the app support multiple devices simultaneously?",
|
|
||||||
answer:
|
|
||||||
"Yes, the app allows you to control multiple compatible devices simultaneously and switch between them.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
topicText: "Setup and Connection",
|
|
||||||
question: "How do I set up the connection between the app and my device?",
|
|
||||||
answer:
|
|
||||||
"The exact setup process may vary depending on the device, but typically, you need to open the app, select the device, and follow the on-screen instructions to establish the connection.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
question:
|
|
||||||
"What steps are required to initially connect the device to the app?",
|
|
||||||
answer:
|
|
||||||
"Launch the app, create an account (if required), add the device by selecting it from the list of available devices, and follow the instructions for establishing the connection.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
question:
|
|
||||||
"Do I need specific settings on the device to establish the connection?",
|
|
||||||
answer:
|
|
||||||
"Yes, in most cases, you need to ensure that the device is powered on and in pairing mode before attempting to connect it through the app.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
question:
|
|
||||||
"What types of connection methods are supported by the app (e.g., Bluetooth, Wi-Fi, etc.)?",
|
|
||||||
answer:
|
|
||||||
"Our app typically supports Wi-Fi connections to enable stable and reliable control over longer distances.",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
question:
|
|
||||||
"What should I do if the connection between the app and the device is lost?",
|
|
||||||
answer:
|
|
||||||
"First, check your internet connection. If the issue persists, you can try removing and re-adding the device from the app. If necessary, restarting the device might help.",
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
export default function HelpCenterModalContent() {
|
export default function HelpCenterModalContent() {
|
||||||
const appContext = useContext(AppContext);
|
const appContext = useContext(AppContext);
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
const helpData =
|
const helpData =
|
||||||
appContext.appLanguage === Constants.defaultLanguage
|
appContext.appLanguage === Constants.defaultLanguage
|
||||||
? helpDataDe
|
? HelpCenterDeQuestionsAnswers
|
||||||
: helpDataEn;
|
: HelpCenterEnQuestionsAnswers;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ModalContainer withoutPadding>
|
<ModalContainer withoutPadding>
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import { useContext } from "react";
|
import { useContext } from "react";
|
||||||
import { FlatList, Text, TouchableOpacity, View } from "react-native";
|
import { Alert, Text, TouchableOpacity, View } from "react-native";
|
||||||
import Card from "../../Components/Card";
|
import Card from "../../Components/Card";
|
||||||
import { AppContext, AppStyles, Constants, ModalContainer } from "../../utils";
|
import { AppContext, AppStyles, Constants } from "../../utils";
|
||||||
import { Divider } from "../../Components/Divider";
|
import { Divider } from "../../Components/Divider";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import MySwitch from "../../Components/Switch";
|
import MySwitch from "../../Components/Switch";
|
||||||
import { MyPickerModalListItem } from "../../Components/Modal";
|
import MyIcon from "../../Components/Icon";
|
||||||
|
|
||||||
export default function SettingsScreen({ navigation }) {
|
export default function SettingsScreen({ navigation }) {
|
||||||
const appContext = useContext(AppContext);
|
const appContext = useContext(AppContext);
|
||||||
|
@ -18,27 +18,16 @@ export default function SettingsScreen({ navigation }) {
|
||||||
backgroundColor: appContext.appTheme.backgroundColor,
|
backgroundColor: appContext.appTheme.backgroundColor,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Card cardTopicText={t("screens.settings.settingsCardTitle")}>
|
<Card
|
||||||
<TouchableOpacity
|
cardTopicText={t("screens.settings.cardGeneral.cardTitle")}
|
||||||
|
contentPaddingTop={10}
|
||||||
|
contentPaddingBottom={10}
|
||||||
|
>
|
||||||
|
<SettingComponent
|
||||||
|
appContext={appContext}
|
||||||
|
text={t("screens.settings.cardGeneral.languageText")}
|
||||||
onPress={() => navigation.navigate("modalSettingsAppLanguage")}
|
onPress={() => navigation.navigate("modalSettingsAppLanguage")}
|
||||||
style={{ marginBottom: 6 }}
|
rightComponent={
|
||||||
>
|
|
||||||
<View
|
|
||||||
style={{
|
|
||||||
flexDirection: "row",
|
|
||||||
alignItems: "center",
|
|
||||||
justifyContent: "space-between",
|
|
||||||
paddingBottom: 4,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Text
|
|
||||||
style={[
|
|
||||||
AppStyles.typography14,
|
|
||||||
{ color: appContext.appTheme.text },
|
|
||||||
]}
|
|
||||||
>
|
|
||||||
{t("screens.settings.languageText")}
|
|
||||||
</Text>
|
|
||||||
<Text style={{ color: appContext.appTheme.colors.primary }}>
|
<Text style={{ color: appContext.appTheme.colors.primary }}>
|
||||||
{
|
{
|
||||||
Constants.languages.find(
|
Constants.languages.find(
|
||||||
|
@ -46,154 +35,200 @@ export default function SettingsScreen({ navigation }) {
|
||||||
).label
|
).label
|
||||||
}
|
}
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
}
|
||||||
</TouchableOpacity>
|
/>
|
||||||
|
|
||||||
<TouchableOpacity
|
<Divider withoutMarginVertical style={{ marginVertical: 2 }} />
|
||||||
|
|
||||||
|
<SettingComponent
|
||||||
|
appContext={appContext}
|
||||||
|
text={t("screens.settings.cardGeneral.appColorSchemeText")}
|
||||||
onPress={() => navigation.navigate("modalSettingsAppColorScheme")}
|
onPress={() => navigation.navigate("modalSettingsAppColorScheme")}
|
||||||
>
|
rightComponent={
|
||||||
<View
|
|
||||||
style={{
|
|
||||||
flexDirection: "row",
|
|
||||||
alignItems: "center",
|
|
||||||
justifyContent: "space-between",
|
|
||||||
paddingTop: 4,
|
|
||||||
paddingBottom: 4,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Text
|
|
||||||
style={[
|
|
||||||
AppStyles.typography14,
|
|
||||||
{ color: appContext.appTheme.text },
|
|
||||||
]}
|
|
||||||
>
|
|
||||||
{t("screens.settings.appColorSchemeText")}
|
|
||||||
</Text>
|
|
||||||
<Text style={{ color: appContext.appTheme.colors.primary }}>
|
<Text style={{ color: appContext.appTheme.colors.primary }}>
|
||||||
{appContext.appColorScheme === "auto"
|
{appContext.appColorScheme === "auto"
|
||||||
? t("screens.settings.appColorSchemePicker.auto")
|
? t(
|
||||||
|
"screens.settings.cardGeneral.modalAppColorSchemePicker.auto"
|
||||||
|
)
|
||||||
: appContext.appColorScheme === "dark"
|
: appContext.appColorScheme === "dark"
|
||||||
? t("screens.settings.appColorSchemePicker.dark")
|
? t(
|
||||||
: t("screens.settings.appColorSchemePicker.light")}
|
"screens.settings.cardGeneral.modalAppColorSchemePicker.dark"
|
||||||
|
)
|
||||||
|
: t(
|
||||||
|
"screens.settings.cardGeneral.modalAppColorSchemePicker.light"
|
||||||
|
)}
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
}
|
||||||
</TouchableOpacity>
|
/>
|
||||||
|
|
||||||
<Divider />
|
<Divider withoutMarginVertical style={{ marginVertical: 2 }} />
|
||||||
<View
|
|
||||||
style={{
|
<SettingComponent
|
||||||
flexDirection: "row",
|
appContext={appContext}
|
||||||
alignItems: "center",
|
title={t("screens.settings.cardGeneral.expertModeTitle")}
|
||||||
justifyContent: "space-between",
|
description={t("screens.settings.cardGeneral.expertModeDescription")}
|
||||||
}}
|
textContainerStyle={{ width: "80%" }}
|
||||||
>
|
rightComponent={
|
||||||
<View style={{ width: "80%" }}>
|
<MySwitch
|
||||||
<Text
|
value={appContext.isUserExpertModeEnabled}
|
||||||
style={[
|
onValueChange={(e) => appContext.setIsUserExpertModeEnabled(e)}
|
||||||
AppStyles.typography16,
|
/>
|
||||||
{ color: appContext.appTheme.text },
|
}
|
||||||
]}
|
/>
|
||||||
>
|
|
||||||
{t("screens.settings.expertModeTitle")}
|
|
||||||
</Text>
|
|
||||||
<Text
|
|
||||||
style={[
|
|
||||||
AppStyles.typography14,
|
|
||||||
{ color: appContext.appTheme.textSecondary },
|
|
||||||
]}
|
|
||||||
>
|
|
||||||
{t("screens.settings.expertModeDescription")}
|
|
||||||
</Text>
|
|
||||||
</View>
|
|
||||||
<MySwitch
|
|
||||||
value={appContext.isUserExpertModeEnabled}
|
|
||||||
onValueChange={(e) => appContext.setIsUserExpertModeEnabled(e)}
|
|
||||||
/>
|
|
||||||
</View>
|
|
||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
<Card>
|
<Card contentPaddingTop={10} contentPaddingBottom={10}>
|
||||||
<View
|
<SettingComponent
|
||||||
style={{
|
appContext={appContext}
|
||||||
flexDirection: "row",
|
text="Developer Mode"
|
||||||
alignItems: "center",
|
rightComponent={
|
||||||
justifyContent: "space-between",
|
<MySwitch
|
||||||
|
value={appContext.isUserDeveloperModeEnabled}
|
||||||
|
onValueChange={(e) => appContext.setUserIsDeveloperModeEnabled(e)}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</Card>
|
||||||
|
|
||||||
|
<Card
|
||||||
|
cardTopicText={t("screens.settings.cardLegalInformation.cardTitle")}
|
||||||
|
contentPaddingTop={10}
|
||||||
|
contentPaddingBottom={10}
|
||||||
|
>
|
||||||
|
<SettingComponent
|
||||||
|
appContext={appContext}
|
||||||
|
text={t("screens.settings.cardLegalInformation.openSourceLicences")}
|
||||||
|
onPress={() => navigation.navigate("modalOpenSourceLicences")}
|
||||||
|
rightComponent={
|
||||||
|
<MyIcon
|
||||||
|
name="chevron-right"
|
||||||
|
size={24}
|
||||||
|
color={appContext.appTheme.icon}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Divider withoutMarginVertical style={{ marginVertical: 2 }} />
|
||||||
|
|
||||||
|
<SettingComponent
|
||||||
|
appContext={appContext}
|
||||||
|
text={t("screens.settings.cardLegalInformation.termsOfService")}
|
||||||
|
onPress={() =>
|
||||||
|
// TODO: open privacy policy page
|
||||||
|
|
||||||
|
Alert.alert(
|
||||||
|
"Terms of service",
|
||||||
|
"Soon the device will open the terms of service page in your browser."
|
||||||
|
)
|
||||||
|
}
|
||||||
|
rightComponent={
|
||||||
|
<MyIcon
|
||||||
|
name="chevron-right"
|
||||||
|
size={24}
|
||||||
|
color={appContext.appTheme.icon}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Divider withoutMarginVertical style={{ marginVertical: 2 }} />
|
||||||
|
|
||||||
|
<SettingComponent
|
||||||
|
appContext={appContext}
|
||||||
|
text={t("screens.settings.cardLegalInformation.privacyPolicy")}
|
||||||
|
onPress={() => {
|
||||||
|
// TODO: open privacy policy page
|
||||||
|
|
||||||
|
Alert.alert(
|
||||||
|
"Privacy policy",
|
||||||
|
"Soon the device will open the privacy policy page in your browser."
|
||||||
|
);
|
||||||
}}
|
}}
|
||||||
>
|
rightComponent={
|
||||||
<Text style={{ color: appContext.appTheme.text }}>
|
<MyIcon
|
||||||
Developer Mode
|
name="chevron-right"
|
||||||
</Text>
|
size={24}
|
||||||
<MySwitch
|
color={appContext.appTheme.icon}
|
||||||
value={appContext.isUserDeveloperModeEnabled}
|
/>
|
||||||
onValueChange={(e) => appContext.setUserIsDeveloperModeEnabled(e)}
|
}
|
||||||
/>
|
/>
|
||||||
</View>
|
|
||||||
</Card>
|
</Card>
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function SettingsAppLanguageModalContent({ navigation }) {
|
function SettingComponent({
|
||||||
const appContext = useContext(AppContext);
|
appContext,
|
||||||
|
onPress,
|
||||||
|
text,
|
||||||
|
title,
|
||||||
|
description,
|
||||||
|
rightComponent,
|
||||||
|
textContainerStyle,
|
||||||
|
}) {
|
||||||
|
const Component = ({ children }) => {
|
||||||
|
if (onPress) {
|
||||||
|
return (
|
||||||
|
<TouchableOpacity
|
||||||
|
onPress={onPress}
|
||||||
|
activeOpacity={appContext.appTheme.touchableOpacity.activeOpacity}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</TouchableOpacity>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return <>{children}</>;
|
||||||
|
};
|
||||||
|
|
||||||
|
const TextComponent = () => {
|
||||||
|
if (text) {
|
||||||
|
return (
|
||||||
|
<Text
|
||||||
|
style={[
|
||||||
|
{ color: appContext.appTheme.text },
|
||||||
|
AppStyles.typography14,
|
||||||
|
textContainerStyle,
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
{text}
|
||||||
|
</Text>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<View style={textContainerStyle}>
|
||||||
|
<Text
|
||||||
|
style={[AppStyles.typography16, { color: appContext.appTheme.text }]}
|
||||||
|
>
|
||||||
|
{title}
|
||||||
|
</Text>
|
||||||
|
<Text
|
||||||
|
style={[
|
||||||
|
AppStyles.typography14,
|
||||||
|
{ color: appContext.appTheme.textSecondary },
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
{description}
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ModalContainer withoutPadding>
|
<Component>
|
||||||
<FlatList
|
<View
|
||||||
data={Constants.languages}
|
style={{
|
||||||
renderItem={({ item, index }) => (
|
flexDirection: "row",
|
||||||
<MyPickerModalListItem
|
alignItems: "center",
|
||||||
key={index}
|
justifyContent: "space-between",
|
||||||
itemName={item.label}
|
paddingTop: 8,
|
||||||
onPress={() => {
|
paddingBottom: 8,
|
||||||
appContext.setAppLanguage(item.name);
|
}}
|
||||||
navigation.goBack();
|
>
|
||||||
}}
|
<TextComponent />
|
||||||
itemSelected={appContext.appLanguage === item.name}
|
|
||||||
/>
|
{rightComponent}
|
||||||
)}
|
</View>
|
||||||
/>
|
</Component>
|
||||||
</ModalContainer>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function SettingsAppColorSchemeModalContent({ navigation }) {
|
|
||||||
const appContext = useContext(AppContext);
|
|
||||||
const { t } = useTranslation();
|
|
||||||
|
|
||||||
const items = [
|
|
||||||
{
|
|
||||||
label: t("screens.settings.appColorSchemePicker.auto"),
|
|
||||||
onPress: () => appContext.setAppColorScheme("auto"),
|
|
||||||
selected: appContext.appColorScheme === "auto",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: t("screens.settings.appColorSchemePicker.dark"),
|
|
||||||
onPress: () => appContext.setAppColorScheme("dark"),
|
|
||||||
selected: appContext.appColorScheme === "dark",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: t("screens.settings.appColorSchemePicker.light"),
|
|
||||||
onPress: () => appContext.setAppColorScheme("light"),
|
|
||||||
selected: appContext.appColorScheme === "light",
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
return (
|
|
||||||
<ModalContainer withoutPadding>
|
|
||||||
<FlatList
|
|
||||||
data={items}
|
|
||||||
renderItem={({ item, index }) => (
|
|
||||||
<MyPickerModalListItem
|
|
||||||
key={index}
|
|
||||||
itemName={item.label}
|
|
||||||
itemSelected={item.selected}
|
|
||||||
onPress={() => {
|
|
||||||
item.onPress();
|
|
||||||
navigation.goBack();
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
</ModalContainer>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
import { useContext } from "react";
|
||||||
|
import { AppContext, ModalContainer } from "../../../../utils";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
import { FlatList } from "react-native";
|
||||||
|
import { MyPickerModalListItem } from "../../../../Components/Modal";
|
||||||
|
|
||||||
|
export default function SettingsAppColorSchemeModalContent({ navigation }) {
|
||||||
|
const appContext = useContext(AppContext);
|
||||||
|
const { t } = useTranslation();
|
||||||
|
|
||||||
|
const items = [
|
||||||
|
{
|
||||||
|
label: t("screens.settings.cardGeneral.modalAppColorSchemePicker.auto"),
|
||||||
|
onPress: () => appContext.setAppColorScheme("auto"),
|
||||||
|
selected: appContext.appColorScheme === "auto",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: t("screens.settings.cardGeneral.modalAppColorSchemePicker.dark"),
|
||||||
|
onPress: () => appContext.setAppColorScheme("dark"),
|
||||||
|
selected: appContext.appColorScheme === "dark",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: t("screens.settings.cardGeneral.modalAppColorSchemePicker.light"),
|
||||||
|
onPress: () => appContext.setAppColorScheme("light"),
|
||||||
|
selected: appContext.appColorScheme === "light",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
return (
|
||||||
|
<ModalContainer withoutPadding>
|
||||||
|
<FlatList
|
||||||
|
data={items}
|
||||||
|
renderItem={({ item, index }) => (
|
||||||
|
<MyPickerModalListItem
|
||||||
|
key={index}
|
||||||
|
itemName={item.label}
|
||||||
|
itemSelected={item.selected}
|
||||||
|
onPress={() => {
|
||||||
|
item.onPress();
|
||||||
|
navigation.goBack();
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</ModalContainer>
|
||||||
|
);
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
import { useContext } from "react";
|
||||||
|
import { AppContext, Constants, ModalContainer } from "../../../../utils";
|
||||||
|
import { FlatList } from "react-native";
|
||||||
|
import { MyPickerModalListItem } from "../../../../Components/Modal";
|
||||||
|
|
||||||
|
export default function SettingsAppLanguageModalContent({ navigation }) {
|
||||||
|
const appContext = useContext(AppContext);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<ModalContainer withoutPadding>
|
||||||
|
<FlatList
|
||||||
|
data={Constants.languages}
|
||||||
|
renderItem={({ item, index }) => (
|
||||||
|
<MyPickerModalListItem
|
||||||
|
key={index}
|
||||||
|
itemName={item.label}
|
||||||
|
onPress={() => {
|
||||||
|
appContext.setAppLanguage(item.name);
|
||||||
|
navigation.goBack();
|
||||||
|
}}
|
||||||
|
itemSelected={appContext.appLanguage === item.name}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</ModalContainer>
|
||||||
|
);
|
||||||
|
}
|
|
@ -0,0 +1,61 @@
|
||||||
|
import { useContext } from "react";
|
||||||
|
import {
|
||||||
|
AppContext,
|
||||||
|
AppStyles,
|
||||||
|
AppUsedOpenSourceLicences,
|
||||||
|
ModalContainer,
|
||||||
|
OpenUrl,
|
||||||
|
} from "../../../../utils";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
import { AccordionItem } from "../../../../Components/Accordion";
|
||||||
|
import { FlatList, Text, TouchableOpacity, View } from "react-native";
|
||||||
|
|
||||||
|
export default function OpenSourceLicensesModalContent({ navigation }) {
|
||||||
|
const appContext = useContext(AppContext);
|
||||||
|
const { t } = useTranslation();
|
||||||
|
|
||||||
|
return (
|
||||||
|
<ModalContainer withoutPadding>
|
||||||
|
<FlatList
|
||||||
|
data={AppUsedOpenSourceLicences}
|
||||||
|
ListFooterComponent={<View style={AppStyles.appBottom} />}
|
||||||
|
renderItem={({ item, index }) => (
|
||||||
|
<AccordionItem
|
||||||
|
key={index}
|
||||||
|
disablePaddingBottom
|
||||||
|
appContext={appContext}
|
||||||
|
title={item.name}
|
||||||
|
customDescriptionComponent={
|
||||||
|
<>
|
||||||
|
<TouchableOpacity
|
||||||
|
activeOpacity={
|
||||||
|
appContext.appTheme.touchableOpacity.activeOpacity
|
||||||
|
}
|
||||||
|
onPress={() => OpenUrl(item.url)}
|
||||||
|
>
|
||||||
|
<Text
|
||||||
|
style={[
|
||||||
|
{ color: appContext.appTheme.colors.primary },
|
||||||
|
AppStyles.typography12,
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
{item.url}
|
||||||
|
</Text>
|
||||||
|
</TouchableOpacity>
|
||||||
|
|
||||||
|
<Text
|
||||||
|
style={[
|
||||||
|
{ color: appContext.appTheme.textSecondary, marginTop: 6 },
|
||||||
|
AppStyles.typography12,
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
{item.licenseInfo}
|
||||||
|
</Text>
|
||||||
|
</>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</ModalContainer>
|
||||||
|
);
|
||||||
|
}
|
712
src/utils.js
712
src/utils.js
|
@ -1,10 +1,16 @@
|
||||||
import AsyncStorage from "@react-native-async-storage/async-storage";
|
import AsyncStorage from "@react-native-async-storage/async-storage";
|
||||||
import { createContext, createRef, useState } from "react";
|
import { createContext, createRef, useState } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { Appearance, Platform, StyleSheet, View } from "react-native";
|
import { Appearance, Linking, Platform, StyleSheet, View } from "react-native";
|
||||||
import uuid from "react-native-uuid";
|
import uuid from "react-native-uuid";
|
||||||
import * as Haptics from "expo-haptics";
|
import * as Haptics from "expo-haptics";
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Here you can find all the global variables and functions for the app
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
export const Constants = {
|
export const Constants = {
|
||||||
defaultLanguage: "de",
|
defaultLanguage: "de",
|
||||||
defaultColorSwatchesFavorites: [
|
defaultColorSwatchesFavorites: [
|
||||||
|
@ -65,6 +71,10 @@ export const AppStyles = StyleSheet.create({
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
lineHeight: 20,
|
lineHeight: 20,
|
||||||
},
|
},
|
||||||
|
typography12: {
|
||||||
|
fontSize: 12,
|
||||||
|
lineHeight: 16,
|
||||||
|
},
|
||||||
Shadow: {
|
Shadow: {
|
||||||
elevation: 2, // only android
|
elevation: 2, // only android
|
||||||
shadowColor: "#000", // only ios
|
shadowColor: "#000", // only ios
|
||||||
|
@ -144,6 +154,9 @@ const DarkAppTheme = {
|
||||||
transparentBackgroundColor: "rgba(0, 0, 0, 0.4)",
|
transparentBackgroundColor: "rgba(0, 0, 0, 0.4)",
|
||||||
pressedPickerItemColor: "rgba(0, 0, 0, 0.3)",
|
pressedPickerItemColor: "rgba(0, 0, 0, 0.3)",
|
||||||
},
|
},
|
||||||
|
touchableOpacity: {
|
||||||
|
activeOpacity: 0.7,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const LightAppTheme = {
|
const LightAppTheme = {
|
||||||
|
@ -200,8 +213,691 @@ const LightAppTheme = {
|
||||||
transparentBackgroundColor: "rgba(0, 0, 0, 0.3)",
|
transparentBackgroundColor: "rgba(0, 0, 0, 0.3)",
|
||||||
pressedPickerItemColor: "rgba(0, 0, 0, 0.1)",
|
pressedPickerItemColor: "rgba(0, 0, 0, 0.1)",
|
||||||
},
|
},
|
||||||
|
touchableOpacity: {
|
||||||
|
activeOpacity: 0.5,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const AppUsedOpenSourceLicences = [
|
||||||
|
{
|
||||||
|
name: "@miblanchard/react-native-slider",
|
||||||
|
url: "https://github.com/miblanchard/react-native-slider/blob/main/LICENSE",
|
||||||
|
licenseInfo: `MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2019-present Michael Blanchard
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "@react-native-async-storage/async-storage",
|
||||||
|
url: "https://github.com/react-native-async-storage/async-storage/blob/main/LICENSE",
|
||||||
|
licenseInfo: `MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2015-present, Facebook, Inc.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "@react-native-community/slider",
|
||||||
|
url: "https://github.com/callstack/react-native-slider/blob/main/LICENSE.md",
|
||||||
|
licenseInfo: `MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2019 react-native-community
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "@react-navigation/drawer",
|
||||||
|
url: "https://github.com/react-navigation/react-navigation/blob/main/packages/drawer/LICENSE",
|
||||||
|
licenseInfo: `MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2017 React Navigation Contributors
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "@react-navigation/native",
|
||||||
|
url: "https://github.com/react-navigation/react-navigation/blob/main/packages/native/LICENSE",
|
||||||
|
licenseInfo: `MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2017 React Navigation Contributors
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "@react-navigation/stack",
|
||||||
|
url: "https://github.com/react-navigation/react-navigation/blob/main/packages/stack/LICENSE",
|
||||||
|
licenseInfo: `MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2017 React Navigation Contributors
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "expo, expo-haptics, expo-linear-gradient, expo-status-bar",
|
||||||
|
url: "https://github.com/expo/expo/blob/main/LICENSE",
|
||||||
|
licenseInfo: `The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2015-present 650 Industries, Inc. (aka Expo)
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "i18next",
|
||||||
|
url: "https://github.com/i18next/i18next/blob/master/LICENSE",
|
||||||
|
licenseInfo: `The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2023 i18next
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "i18next-browser-languagedetector",
|
||||||
|
url: "https://github.com/i18next/i18next-browser-languageDetector/blob/master/LICENSE",
|
||||||
|
licenseInfo: `The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2023 i18next
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "react",
|
||||||
|
url: "https://github.com/facebook/react/blob/main/LICENSE",
|
||||||
|
licenseInfo: `MIT License
|
||||||
|
|
||||||
|
Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "react-i18next",
|
||||||
|
url: "https://github.com/i18next/react-i18next/blob/master/LICENSE",
|
||||||
|
licenseInfo: `The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2023 i18next
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "react-native",
|
||||||
|
url: "https://github.com/facebook/react-native/blob/main/LICENSE",
|
||||||
|
licenseInfo: `MIT License
|
||||||
|
|
||||||
|
Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "react-native-draggable-flatlist",
|
||||||
|
url: "https://github.com/computerjazz/react-native-draggable-flatlist/blob/main/LICENSE.txt",
|
||||||
|
licenseInfo: `MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2019 computerjazz
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "react-native-gesture-handler",
|
||||||
|
url: "https://github.com/software-mansion/react-native-gesture-handler/blob/main/LICENSE",
|
||||||
|
licenseInfo: `The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2016 Software Mansion <swmansion.com>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "react-native-pager-view",
|
||||||
|
url: "https://github.com/callstack/react-native-pager-view/blob/master/LICENSE",
|
||||||
|
licenseInfo: `MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2021 Callstack
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "react-native-reanimated",
|
||||||
|
url: "https://github.com/software-mansion/react-native-reanimated/blob/main/LICENSE",
|
||||||
|
licenseInfo: `The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2016 Software Mansion <swmansion.com>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "react-native-safe-area-context",
|
||||||
|
url: "https://github.com/th3rdwave/react-native-safe-area-context/blob/main/LICENSE",
|
||||||
|
licenseInfo: `MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2019 Th3rd Wave
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "react-native-screens",
|
||||||
|
url: "https://github.com/software-mansion/react-native-screens/blob/main/LICENSE",
|
||||||
|
licenseInfo: `The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2018 Software Mansion <swmansion.com>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "react-native-tab-view",
|
||||||
|
url: "https://github.com/react-navigation/react-navigation/blob/main/packages/react-native-tab-view/LICENSE",
|
||||||
|
licenseInfo: `MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2017 React Native Community
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "react-native-uuid",
|
||||||
|
url: "https://github.com/eugenehp/react-native-uuid/blob/master/LICENSE",
|
||||||
|
licenseInfo: `MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2016-2021 Eugene Hauptmann
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "react-native-zeroconf",
|
||||||
|
url: "https://github.com/balthazar/react-native-zeroconf/blob/master/LICENSE",
|
||||||
|
licenseInfo: `The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2016 Balthazar Gronon
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "reanimated-color-picker",
|
||||||
|
url: "https://github.com/alabsi91/reanimated-color-picker/blob/main/LICENSE",
|
||||||
|
licenseInfo: `MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2022 Ahmed Alabsi
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.`,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export const HelpCenterDeQuestionsAnswers = [
|
||||||
|
{
|
||||||
|
topicText: "Allgemeine Fragen",
|
||||||
|
question:
|
||||||
|
"Was ist die grundlegende Funktionalität der Handy-App zur Gerätesteuerung?",
|
||||||
|
answer:
|
||||||
|
"Die Handy-App ermöglicht es Ihnen, kompatible Geräte über Ihr Smartphone oder Tablet zu steuern. Sie können verschiedene Funktionen aktivieren, Einstellungen ändern und Aktionen aus der Ferne ausführen.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: "Welche Arten von Geräten können über die App gesteuert werden?",
|
||||||
|
answer:
|
||||||
|
"Unsere App unterstützt eine Vielzahl von Geräten, darunter Smart-Home-Geräte, Unterhaltungselektronik, Haushaltsgeräte und mehr.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: "Ist die App für Android- und iOS-Geräte verfügbar?",
|
||||||
|
answer:
|
||||||
|
"Ja, die App ist sowohl für Android- als auch für iOS-Geräte verfügbar. Sie können sie im Google Play Store bzw. im Apple App Store herunterladen.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: "Wo kann ich die App herunterladen?",
|
||||||
|
answer:
|
||||||
|
"Sie können die App direkt aus dem Google Play Store (für Android) oder dem Apple App Store (für iOS) herunterladen und installieren.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question:
|
||||||
|
"Benötige ich eine Internetverbindung, um das Gerät über die App zu steuern?",
|
||||||
|
answer:
|
||||||
|
"Ja, eine aktive Internetverbindung (Wi-Fi oder mobile Daten) ist erforderlich, um die App mit dem Gerät zu verbinden und die Steuerungsfunktionen zu nutzen.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: "Unterstützt die App mehrere Geräte gleichzeitig?",
|
||||||
|
answer:
|
||||||
|
"Ja, die App ermöglicht es Ihnen, mehrere kompatible Geräte gleichzeitig zu steuern und zwischen ihnen zu wechseln.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
topicText: "Einrichtung und Verbindung",
|
||||||
|
question:
|
||||||
|
"Wie richte ich die Verbindung zwischen der App und meinem Gerät ein?",
|
||||||
|
answer:
|
||||||
|
"Die genaue Einrichtung kann je nach Gerät variieren, aber normalerweise müssen Sie die App öffnen, das Gerät auswählen und den Anweisungen auf dem Bildschirm folgen, um die Verbindung herzustellen.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question:
|
||||||
|
"Welche Schritte sind erforderlich, um das Gerät zum ersten Mal mit der App zu verbinden?",
|
||||||
|
answer:
|
||||||
|
"Starten Sie die App, erstellen Sie ein Konto (falls erforderlich), fügen Sie das Gerät hinzu, indem Sie es aus der Liste der verfügbaren Geräte auswählen, und folgen Sie den Anweisungen zur Verbindungsherstellung.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question:
|
||||||
|
"Benötige ich spezielle Einstellungen am Gerät, um die Verbindung herzustellen?",
|
||||||
|
answer:
|
||||||
|
"Ja, in den meisten Fällen müssen Sie sicherstellen, dass das Gerät eingeschaltet und im Verbindungsmodus ist, bevor Sie versuchen, es über die App zu verbinden.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question:
|
||||||
|
"Welche Arten von Verbindungsmethoden werden von der App unterstützt (z. B. Bluetooth, WLAN, etc.)?",
|
||||||
|
answer:
|
||||||
|
"Unsere App unterstützt in der Regel WLAN-Verbindungen, um eine stabile und zuverlässige Steuerung über größere Entfernungen zu ermöglichen.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question:
|
||||||
|
"Was sollte ich tun, wenn die Verbindung zwischen der App und dem Gerät verloren geht?",
|
||||||
|
answer:
|
||||||
|
"Überprüfen Sie zuerst Ihre Internetverbindung. Wenn das Problem weiterhin besteht, können Sie versuchen, das Gerät aus der App zu entfernen und erneut hinzuzufügen. Gegebenenfalls kann ein Neustart des Geräts helfen.",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export const HelpCenterEnQuestionsAnswers = [
|
||||||
|
{
|
||||||
|
topicText: "General Questions",
|
||||||
|
question:
|
||||||
|
"What is the basic functionality of the mobile app for device control?",
|
||||||
|
answer:
|
||||||
|
"The mobile app allows you to control compatible devices using your smartphone or tablet. You can activate various functions, change settings, and perform actions remotely.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: "What types of devices can be controlled through the app?",
|
||||||
|
answer:
|
||||||
|
"Our app supports a variety of devices, including smart home devices, entertainment electronics, household appliances, and more.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: "Is the app available for both Android and iOS devices?",
|
||||||
|
answer:
|
||||||
|
"Yes, the app is available for both Android and iOS devices. You can download it from the Google Play Store or the Apple App Store.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: "Where can I download the app?",
|
||||||
|
answer:
|
||||||
|
"You can download and install the app directly from the Google Play Store (for Android) or the Apple App Store (for iOS).",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question:
|
||||||
|
"Do I need an internet connection to control the device through the app?",
|
||||||
|
answer:
|
||||||
|
"Yes, an active internet connection (Wi-Fi or mobile data) is required to connect the app to the device and use the control functions.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question: "Does the app support multiple devices simultaneously?",
|
||||||
|
answer:
|
||||||
|
"Yes, the app allows you to control multiple compatible devices simultaneously and switch between them.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
topicText: "Setup and Connection",
|
||||||
|
question: "How do I set up the connection between the app and my device?",
|
||||||
|
answer:
|
||||||
|
"The exact setup process may vary depending on the device, but typically, you need to open the app, select the device, and follow the on-screen instructions to establish the connection.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question:
|
||||||
|
"What steps are required to initially connect the device to the app?",
|
||||||
|
answer:
|
||||||
|
"Launch the app, create an account (if required), add the device by selecting it from the list of available devices, and follow the instructions for establishing the connection.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question:
|
||||||
|
"Do I need specific settings on the device to establish the connection?",
|
||||||
|
answer:
|
||||||
|
"Yes, in most cases, you need to ensure that the device is powered on and in pairing mode before attempting to connect it through the app.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question:
|
||||||
|
"What types of connection methods are supported by the app (e.g., Bluetooth, Wi-Fi, etc.)?",
|
||||||
|
answer:
|
||||||
|
"Our app typically supports Wi-Fi connections to enable stable and reliable control over longer distances.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
question:
|
||||||
|
"What should I do if the connection between the app and the device is lost?",
|
||||||
|
answer:
|
||||||
|
"First, check your internet connection. If the issue persists, you can try removing and re-adding the device from the app. If necessary, restarting the device might help.",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Do not change code below this line if you don't know what you are doing
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
export async function StoreData(key, value) {
|
export async function StoreData(key, value) {
|
||||||
try {
|
try {
|
||||||
const jsonValue = JSON.stringify(value);
|
const jsonValue = JSON.stringify(value);
|
||||||
|
@ -324,7 +1020,7 @@ const devDevicesFirmwareModes = {
|
||||||
],
|
],
|
||||||
lightAnimationsIn: [
|
lightAnimationsIn: [
|
||||||
{
|
{
|
||||||
id: "00000000-0000-0000-0000-000000000000",
|
id: Constants.defaultAnimationId,
|
||||||
supportedFirmwareVersions: ["*"],
|
supportedFirmwareVersions: ["*"],
|
||||||
name: {
|
name: {
|
||||||
de: "Keine",
|
de: "Keine",
|
||||||
|
@ -359,7 +1055,7 @@ const devDevicesFirmwareModes = {
|
||||||
],
|
],
|
||||||
lightAnimationsOut: [
|
lightAnimationsOut: [
|
||||||
{
|
{
|
||||||
id: "00000000-0000-0000-0000-000000000000",
|
id: Constants.defaultAnimationId,
|
||||||
supportedFirmwareVersions: ["*"],
|
supportedFirmwareVersions: ["*"],
|
||||||
name: {
|
name: {
|
||||||
de: "Keine",
|
de: "Keine",
|
||||||
|
@ -616,9 +1312,9 @@ export function NewAction(sceneId, actionType, modeAdjustments) {
|
||||||
type: actionType, // layers, ambilight, motor
|
type: actionType, // layers, ambilight, motor
|
||||||
modeId: "",
|
modeId: "",
|
||||||
modeAdjustments: modeAdjustments,
|
modeAdjustments: modeAdjustments,
|
||||||
animationInId: "00000000-0000-0000-0000-000000000000", // default animation id for -> No animation selected
|
animationInId: Constants.defaultAnimationId, // default animation id for -> No animation selected
|
||||||
animationInAdjustment: {},
|
animationInAdjustment: {},
|
||||||
animationOutId: "00000000-0000-0000-0000-000000000000", // default animation id for -> No animation selected
|
animationOutId: Constants.defaultAnimationId, // default animation id for -> No animation selected
|
||||||
animationOutAdjustment: {},
|
animationOutAdjustment: {},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -746,3 +1442,9 @@ export function ModalContainer({ children, withoutPadding }) {
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function OpenUrl(url) {
|
||||||
|
Linking.openURL(url).catch((err) =>
|
||||||
|
console.error("An error occurred while opening the url", err)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue