Skip to content

Commit e72946e

Browse files
yash-rajpaldiegolmello
authored andcommitted
hide login buttons and login on web
1 parent 2096f5e commit e72946e

3 files changed

Lines changed: 45 additions & 7 deletions

File tree

app/containers/LoginServices/index.tsx

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,30 @@
11
import { useState, type ReactElement } from 'react';
22
import { shallowEqual } from 'react-redux';
33
import Animated, { Easing, useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';
4+
import { Linking } from 'react-native';
45

56
import { type IServices } from '../../selectors/login';
67
import { useAppSelector } from '../../lib/hooks/useAppSelector';
8+
import I18n from '../../i18n';
79
import { type IItemService, type IServiceList } from './interfaces';
810
import { SERVICES_COLLAPSED_HEIGHT, SERVICE_HEIGHT } from './styles';
911
import ServicesSeparator from './ServicesSeparator';
1012
import Service from './Service';
13+
import Button from '../Button';
1114

12-
const ServiceList = ({ services, CAS_enabled, CAS_login_url, Gitlab_URL, server, collapsed }: IServiceList) => (
15+
const ServiceList = ({
16+
services,
17+
CAS_enabled,
18+
CAS_login_url,
19+
Gitlab_URL,
20+
server,
21+
collapsed,
22+
showLoginOnWeb
23+
}: IServiceList & { showLoginOnWeb: boolean }) => (
1324
<>
1425
{Object.values(services).map((service: IItemService, index: number) => {
1526
if (index > 2 && collapsed) return null;
27+
1628
return (
1729
<Service
1830
key={service._id}
@@ -24,6 +36,14 @@ const ServiceList = ({ services, CAS_enabled, CAS_login_url, Gitlab_URL, server,
2436
/>
2537
);
2638
})}
39+
{showLoginOnWeb && (
40+
<Button
41+
title={I18n.t('Login_on_web')}
42+
onPress={() => {
43+
Linking.openURL(`${server}/home?loginClient=mobile`);
44+
}}
45+
/>
46+
)}
2747
</>
2848
);
2949

@@ -40,7 +60,11 @@ const LoginServices = ({ separator }: { separator: boolean }): ReactElement => {
4060
);
4161
const server = useAppSelector(state => state.server.server);
4262
const services = useAppSelector(state => state.login.services as IServices, shallowEqual);
43-
const { length } = Object.values(services);
63+
const showLoginOnWeb = Boolean(Object.values(services).find((service: IItemService) => service.hideButtonOnMobile === true));
64+
const filteredServices = Object.fromEntries(
65+
Object.entries(services).filter(([, service]) => !service.hideButtonOnMobile)
66+
) as IServices;
67+
const { length } = Object.values(filteredServices);
4468

4569
const heightButtons = useSharedValue(SERVICES_COLLAPSED_HEIGHT);
4670

@@ -50,7 +74,7 @@ const LoginServices = ({ separator }: { separator: boolean }): ReactElement => {
5074
}));
5175

5276
const onPressButtonSeparator = () => {
53-
heightButtons.value = collapsed ? SERVICE_HEIGHT * length : SERVICES_COLLAPSED_HEIGHT;
77+
heightButtons.value = collapsed ? SERVICE_HEIGHT * (length + (showLoginOnWeb ? 1 : 0)) : SERVICES_COLLAPSED_HEIGHT;
5478
setCollapsed(prevState => !prevState);
5579
};
5680

@@ -59,29 +83,41 @@ const LoginServices = ({ separator }: { separator: boolean }): ReactElement => {
5983
<>
6084
<Animated.View style={animatedStyle}>
6185
<ServiceList
62-
services={services}
86+
services={filteredServices}
6387
CAS_enabled={CAS_enabled}
6488
CAS_login_url={CAS_login_url}
6589
Gitlab_URL={Gitlab_URL}
6690
server={server}
6791
collapsed={collapsed}
92+
showLoginOnWeb={showLoginOnWeb}
6893
/>
6994
</Animated.View>
70-
<ServicesSeparator services={services} separator={separator} collapsed={collapsed} onPress={onPressButtonSeparator} />
95+
<ServicesSeparator
96+
services={filteredServices}
97+
separator={separator}
98+
collapsed={collapsed}
99+
onPress={onPressButtonSeparator}
100+
/>
71101
</>
72102
);
73103
}
74104
return (
75105
<>
76106
<ServiceList
77-
services={services}
107+
services={filteredServices}
78108
CAS_enabled={CAS_enabled}
79109
CAS_login_url={CAS_login_url}
80110
Gitlab_URL={Gitlab_URL}
81111
server={server}
82112
collapsed={collapsed}
113+
showLoginOnWeb={showLoginOnWeb}
114+
/>
115+
<ServicesSeparator
116+
services={filteredServices}
117+
separator={separator}
118+
collapsed={collapsed}
119+
onPress={onPressButtonSeparator}
83120
/>
84-
<ServicesSeparator services={services} separator={separator} collapsed={collapsed} onPress={onPressButtonSeparator} />
85121
</>
86122
);
87123
};

app/containers/LoginServices/interfaces.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export interface IItemService {
2424
authorizePath: string;
2525
clientId: string;
2626
scope: string;
27+
hideButtonOnMobile?: boolean;
2728
}
2829

2930
export interface IServiceLogin {

app/i18n/locales/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,7 @@
514514
"Login_error": "Your credentials were rejected! Please try again.",
515515
"Login_has_been_temporarily_blocked_for_this_IP": "Login has been temporarily blocked for this IP",
516516
"Login_has_been_temporarily_blocked_for_this_User": "Login has been temporarily blocked for this user",
517+
"Login_on_web": "Login on web",
517518
"Logout": "Logout",
518519
"Logout_failed": "Logout failed!",
519520
"Logout_from_other_logged_in_locations": "Logout from other logged in locations",

0 commit comments

Comments
 (0)