Skip to content

Commit

Permalink
feat: fix new user null bug and text input bug (#31)
Browse files Browse the repository at this point in the history
  • Loading branch information
IZUMI-Zu authored Oct 27, 2024
1 parent 4fef2a2 commit ea4f542
Show file tree
Hide file tree
Showing 8 changed files with 125 additions and 92 deletions.
47 changes: 28 additions & 19 deletions App.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
// See the License for the specific language governing permissions and
// limitations under the License.

import * as React from "react";
import React from "react";
import {Lato_700Bold, useFonts} from "@expo-google-fonts/lato";
import {Roboto_500Medium} from "@expo-google-fonts/roboto";
import {NavigationContainer} from "@react-navigation/native";
import {PaperProvider} from "react-native-paper";
import {SafeAreaView, Text} from "react-native";
Expand All @@ -29,6 +31,11 @@ import migrations from "./drizzle/migrations";

const App = () => {
const {success, error} = useMigrations(db, migrations);
const [fontsLoaded] = useFonts({
Lato_700Bold,
Roboto_500Medium,
});

const {NotificationsProvider} = createNotifications({
duration: 800,
notificationPosition: "top",
Expand All @@ -53,25 +60,27 @@ const App = () => {
);
}

if (!success) {
if (!success || !fontsLoaded) {
return (
<ContentLoader
speed={2}
width={400}
height={150}
viewBox="0 0 400 150"
backgroundColor="#f3f3f3"
foregroundColor="#ecebeb"
>
<Circle cx="10" cy="20" r="8" />
<Rect x="25" y="15" rx="5" ry="5" width="220" height="10" />
<Circle cx="10" cy="50" r="8" />
<Rect x="25" y="45" rx="5" ry="5" width="220" height="10" />
<Circle cx="10" cy="80" r="8" />
<Rect x="25" y="75" rx="5" ry="5" width="220" height="10" />
<Circle cx="10" cy="110" r="8" />
<Rect x="25" y="105" rx="5" ry="5" width="220" height="10" />
</ContentLoader>
<SafeAreaView style={{flex: 1, justifyContent: "center", alignItems: "center"}}>
<ContentLoader
speed={2}
width={300}
height={150}
viewBox="0 0 300 150"
backgroundColor="#f3f3f3"
foregroundColor="#ecebeb"
>
<Circle cx="10" cy="20" r="8" />
<Rect x="25" y="15" rx="5" ry="5" width="220" height="10" />
<Circle cx="10" cy="50" r="8" />
<Rect x="25" y="45" rx="5" ry="5" width="220" height="10" />
<Circle cx="10" cy="80" r="8" />
<Rect x="25" y="75" rx="5" ry="5" width="220" height="10" />
<Circle cx="10" cy="110" r="8" />
<Rect x="25" y="105" rx="5" ry="5" width="220" height="10" />
</ContentLoader>
</SafeAreaView>
);
}

Expand Down
1 change: 1 addition & 0 deletions CasdoorLoginPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ function CasdoorLoginPage({onWebviewClose, initialMethod}) {
<EnterCasdoorSdkConfig
onClose={() => handleLogin(initialMethod)}
onWebviewClose={onWebviewClose}
usePortal={false}
/>
),
scanner: (
Expand Down
121 changes: 61 additions & 60 deletions EnterCasdoorSdkConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import {useNotifications} from "react-native-notificated";
import PropTypes from "prop-types";
import useStore from "./useStorage";

function EnterCasdoorSdkConfig({onClose, onWebviewClose}) {
function EnterCasdoorSdkConfig({onClose, onWebviewClose, usePortal = true}) {
const {
serverUrl,
clientId,
Expand Down Expand Up @@ -52,72 +52,73 @@ function EnterCasdoorSdkConfig({onClose, onWebviewClose}) {
onClose();
};

return (
<Portal>
<View style={styles.container}>
<View style={styles.content}>
<Text style={styles.title}>Casdoor Configuration</Text>
<View style={styles.formContainer}>
<TextInput
label="Endpoint"
value={serverUrl}
onChangeText={setServerUrl}
autoCapitalize="none"
style={styles.input}
mode="outlined"
/>
<TextInput
label="Client ID"
value={clientId}
onChangeText={setClientId}
autoCapitalize="none"
style={styles.input}
mode="outlined"
/>
<TextInput
label="App Name"
value={appName}
onChangeText={setAppName}
autoCapitalize="none"
style={styles.input}
mode="outlined"
/>
<TextInput
label="Organization Name"
value={organizationName}
onChangeText={setOrganizationName}
autoCapitalize="none"
style={styles.input}
mode="outlined"
/>
</View>
<View style={styles.buttonContainer}>
<Button
mode="outlined"
onPress={closeConfigPage}
style={styles.button}
labelStyle={styles.buttonLabel}
>
Cancel
</Button>
<Button
mode="contained"
onPress={handleSave}
style={styles.button}
labelStyle={styles.buttonLabel}
>
Confirm
</Button>
</View>
const content = (
<View style={styles.container}>
<View style={styles.content}>
<Text style={styles.title}>Casdoor Configuration</Text>
<View style={styles.formContainer}>
<TextInput
label="Endpoint"
value={serverUrl}
onChangeText={setServerUrl}
autoCapitalize="none"
style={styles.input}
mode="outlined"
/>
<TextInput
label="Client ID"
value={clientId}
onChangeText={setClientId}
autoCapitalize="none"
style={styles.input}
mode="outlined"
/>
<TextInput
label="App Name"
value={appName}
onChangeText={setAppName}
autoCapitalize="none"
style={styles.input}
mode="outlined"
/>
<TextInput
label="Organization Name"
value={organizationName}
onChangeText={setOrganizationName}
autoCapitalize="none"
style={styles.input}
mode="outlined"
/>
</View>
<View style={styles.buttonContainer}>
<Button
mode="outlined"
onPress={closeConfigPage}
style={styles.button}
labelStyle={styles.buttonLabel}
>
Cancel
</Button>
<Button
mode="contained"
onPress={handleSave}
style={styles.button}
labelStyle={styles.buttonLabel}
>
Confirm
</Button>
</View>
</View>
</Portal>
</View>
);

return usePortal ? <Portal>{content}</Portal> : content;
}

EnterCasdoorSdkConfig.propTypes = {
onClose: PropTypes.func.isRequired,
onWebviewClose: PropTypes.func.isRequired,
usePortal: PropTypes.bool,
};

const styles = StyleSheet.create({
Expand All @@ -142,7 +143,7 @@ const styles = StyleSheet.create({
title: {
fontSize: 20,
fontWeight: "bold",
fontFamily: "Lato-Bold",
fontFamily: "Lato_700Bold",
color: "#212121",
textAlign: "center",
marginBottom: 16,
Expand Down
4 changes: 2 additions & 2 deletions Header.js
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ const styles = StyleSheet.create({
fontSize: Math.max(24, width * 0.05),
fontWeight: "bold",
color: "#212121",
fontFamily: "Lato-Bold",
fontFamily: "Lato_700Bold",
},
buttonContainer: {
borderRadius: 24,
Expand All @@ -179,7 +179,7 @@ const styles = StyleSheet.create({
fontWeight: "600",
marginLeft: 8,
color: "#424242",
fontFamily: "Roboto-Medium",
fontFamily: "Roboto_500Medium",
},
menuContent: {
backgroundColor: "#FAFAFA",
Expand Down
5 changes: 4 additions & 1 deletion api.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,10 @@ export const getMfaAccounts = async(serverUrl, owner, name, token, timeoutMs = T
throw new Error(res.msg);
}

return {updatedTime: res.data.updatedTime, mfaAccounts: res.data.mfaAccounts};
return {
updatedTime: res.data.updatedTime,
mfaAccounts: res.data.mfaAccounts || [],
};
} catch (error) {
if (error.name === "AbortError") {
throw new Error("Request timed out");
Expand Down
3 changes: 2 additions & 1 deletion app.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@
"photosPermission": "The app accesses your photos to add Totp account."
}
],
"expo-asset"
"expo-asset",
"expo-font"
],
"owner": "casdoor"
}
Expand Down
31 changes: 23 additions & 8 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
"release": "npx -p semantic-release-expo -p semantic-release -p @semantic-release/git -p @semantic-release/changelog -p @semantic-release/exec semantic-release"
},
"dependencies": {
"@expo-google-fonts/lato": "^0.2.3",
"@expo-google-fonts/roboto": "^0.2.3",
"@expo/react-native-action-sheet": "^4.1.0",
"@react-native-async-storage/async-storage": "1.23.1",
"@react-native-community/masked-view": "^0.1.11",
Expand All @@ -21,13 +23,14 @@
"casdoor-react-native-sdk": "1.1.0",
"drizzle-orm": "^0.33.0",
"eslint-plugin-import": "^2.28.1",
"expo": "~51.0.37",
"expo": "~51.0.38",
"expo-asset": "~10.0.10",
"expo-camera": "~15.0.16",
"expo-crypto": "~13.0.2",
"expo-dev-client": "~4.0.28",
"expo-document-picker": "~12.0.2",
"expo-drizzle-studio-plugin": "^0.0.2",
"expo-font": "~12.0.10",
"expo-image": "~1.13.0",
"expo-image-picker": "~15.0.7",
"expo-sqlite": "^14.0.6",
Expand Down

0 comments on commit ea4f542

Please sign in to comment.