@umituz/react-native-settings 4.5.0 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umituz/react-native-settings",
3
- "version": "4.5.0",
3
+ "version": "4.6.0",
4
4
  "description": "Settings management for React Native apps - user preferences, theme, language, notifications",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
@@ -16,35 +16,35 @@ export interface UserProfileHeaderProps {
16
16
  displayName?: string;
17
17
  /** User ID */
18
18
  userId?: string;
19
- /** Whether user is guest */
20
- isGuest?: boolean;
19
+ /** Whether user is anonymous (device-based ID) */
20
+ isAnonymous?: boolean;
21
21
  /** Avatar URL (optional) */
22
22
  avatarUrl?: string;
23
23
  /** Navigation route for account settings */
24
24
  accountSettingsRoute?: string;
25
25
  /** Custom onPress handler */
26
26
  onPress?: () => void;
27
- /** Custom guest user display name */
28
- guestDisplayName?: string;
27
+ /** Custom anonymous user display name */
28
+ anonymousDisplayName?: string;
29
29
  /** Custom avatar service URL */
30
30
  avatarServiceUrl?: string;
31
31
  /** Default user display name when no displayName provided */
32
32
  defaultUserDisplayName?: string;
33
- /** Default guest display name */
34
- defaultGuestDisplayName?: string;
33
+ /** Default anonymous display name */
34
+ defaultAnonymousDisplayName?: string;
35
35
  }
36
36
 
37
37
  export const UserProfileHeader: React.FC<UserProfileHeaderProps> = ({
38
38
  displayName,
39
39
  userId,
40
- isGuest = false,
40
+ isAnonymous = false,
41
41
  avatarUrl,
42
42
  accountSettingsRoute,
43
43
  onPress,
44
- guestDisplayName,
44
+ anonymousDisplayName,
45
45
  avatarServiceUrl,
46
46
  defaultUserDisplayName,
47
- defaultGuestDisplayName,
47
+ defaultAnonymousDisplayName,
48
48
  }) => {
49
49
  const tokens = useAppDesignTokens();
50
50
  const navigation = useNavigation();
@@ -52,8 +52,8 @@ export const UserProfileHeader: React.FC<UserProfileHeaderProps> = ({
52
52
  const spacing = tokens.spacing;
53
53
  const [imageError, setImageError] = useState(false);
54
54
 
55
- const finalDisplayName = displayName || (isGuest ? guestDisplayName || defaultGuestDisplayName || "Guest" : defaultUserDisplayName || "User");
56
- const avatarName = isGuest ? guestDisplayName || defaultGuestDisplayName || defaultGuestDisplayName || "Guest" : finalDisplayName;
55
+ const finalDisplayName = displayName || (isAnonymous ? anonymousDisplayName || defaultAnonymousDisplayName || "Anonymous" : defaultUserDisplayName || "User");
56
+ const avatarName = isAnonymous ? anonymousDisplayName || defaultAnonymousDisplayName || "Anonymous" : finalDisplayName;
57
57
 
58
58
  const defaultAvatarService = avatarServiceUrl || "https://ui-avatars.com/api";
59
59
  const finalAvatarUrl =
@@ -30,6 +30,25 @@ export interface SettingsStackNavigatorProps {
30
30
  */
31
31
  appVersion?: string;
32
32
 
33
+ /**
34
+ * Show user profile header
35
+ */
36
+ showUserProfile?: boolean;
37
+
38
+ /**
39
+ * User profile props for anonymous/authenticated users
40
+ */
41
+ userProfile?: {
42
+ displayName?: string;
43
+ userId?: string;
44
+ isAnonymous?: boolean;
45
+ avatarUrl?: string;
46
+ accountSettingsRoute?: string;
47
+ onPress?: () => void;
48
+ anonymousDisplayName?: string;
49
+ avatarServiceUrl?: string;
50
+ };
51
+
33
52
  /**
34
53
  * Additional screens to register
35
54
  * Apps can add their own screens here
@@ -46,6 +65,8 @@ const Stack = createStackNavigator<SettingsStackParamList>();
46
65
  export const SettingsStackNavigator: React.FC<SettingsStackNavigatorProps> = ({
47
66
  config = {},
48
67
  appVersion,
68
+ showUserProfile = false,
69
+ userProfile,
49
70
  additionalScreens = [],
50
71
  }) => {
51
72
  const tokens = useAppDesignTokens();
@@ -66,10 +87,17 @@ export const SettingsStackNavigator: React.FC<SettingsStackNavigatorProps> = ({
66
87
 
67
88
  // Memoize SettingsScreen wrapper to prevent remounting on every render
68
89
  const SettingsScreenWrapper = React.useMemo(() => {
69
- const Wrapper = () => <SettingsScreen config={config} appVersion={appVersion} />;
90
+ const Wrapper = () => (
91
+ <SettingsScreen
92
+ config={config}
93
+ appVersion={appVersion}
94
+ showUserProfile={showUserProfile}
95
+ userProfile={userProfile}
96
+ />
97
+ );
70
98
  Wrapper.displayName = "SettingsScreenWrapper";
71
99
  return Wrapper;
72
- }, [config, appVersion]);
100
+ }, [config, appVersion, showUserProfile, userProfile]);
73
101
 
74
102
  return (
75
103
  <Stack.Navigator screenOptions={screenOptions}>
@@ -25,11 +25,11 @@ export interface SettingsScreenProps {
25
25
  userProfile?: {
26
26
  displayName?: string;
27
27
  userId?: string;
28
- isGuest?: boolean;
28
+ isAnonymous?: boolean;
29
29
  avatarUrl?: string;
30
30
  accountSettingsRoute?: string;
31
31
  onPress?: () => void;
32
- guestDisplayName?: string;
32
+ anonymousDisplayName?: string;
33
33
  avatarServiceUrl?: string;
34
34
  };
35
35
  /** Show footer with version */
@@ -35,11 +35,11 @@ interface SettingsContentProps {
35
35
  userProfile?: {
36
36
  displayName?: string;
37
37
  userId?: string;
38
- isGuest?: boolean;
38
+ isAnonymous?: boolean;
39
39
  avatarUrl?: string;
40
40
  accountSettingsRoute?: string;
41
41
  onPress?: () => void;
42
- guestDisplayName?: string;
42
+ anonymousDisplayName?: string;
43
43
  avatarServiceUrl?: string;
44
44
  };
45
45
  showFooter?: boolean;
@@ -99,10 +99,12 @@ export const SettingsContent: React.FC<SettingsContentProps> = ({
99
99
  <UserProfileHeader
100
100
  displayName={userProfile?.displayName}
101
101
  userId={userProfile?.userId}
102
- isGuest={userProfile?.isGuest}
102
+ isAnonymous={userProfile?.isAnonymous}
103
103
  avatarUrl={userProfile?.avatarUrl}
104
104
  accountSettingsRoute={userProfile?.accountSettingsRoute}
105
105
  onPress={userProfile?.onPress}
106
+ anonymousDisplayName={userProfile?.anonymousDisplayName}
107
+ avatarServiceUrl={userProfile?.avatarServiceUrl}
106
108
  />
107
109
  </View>
108
110
  )}