```
replace setting tab button with conditional rendering based on user authentication status, showing avatar if available ```
This commit is contained in:
@@ -30,6 +30,8 @@ import './google_fonts.css';
|
|||||||
import { App as CapacitorApp } from '@capacitor/app';
|
import { App as CapacitorApp } from '@capacitor/app';
|
||||||
import {
|
import {
|
||||||
IonApp,
|
IonApp,
|
||||||
|
IonFab,
|
||||||
|
IonFabButton,
|
||||||
IonIcon,
|
IonIcon,
|
||||||
IonLabel,
|
IonLabel,
|
||||||
IonRouterOutlet,
|
IonRouterOutlet,
|
||||||
@@ -48,6 +50,9 @@ import ContextMeta from './contexts';
|
|||||||
import { useAppStateContext } from './contexts/AppState';
|
import { useAppStateContext } from './contexts/AppState';
|
||||||
import { useMyIonQuizContext } from './contexts/MyIonQuiz';
|
import { useMyIonQuizContext } from './contexts/MyIonQuiz';
|
||||||
import { RouteConfig } from './RouteConfig';
|
import { RouteConfig } from './RouteConfig';
|
||||||
|
import { Paths } from './Paths';
|
||||||
|
import { useUser } from './hooks/use-user';
|
||||||
|
import getImageUrlFromFile from './lib/get-image-url-from-file.ts';
|
||||||
|
|
||||||
let active_color = 'tomato';
|
let active_color = 'tomato';
|
||||||
let inactive_color = 'gray';
|
let inactive_color = 'gray';
|
||||||
@@ -68,6 +73,7 @@ setupIonicReact();
|
|||||||
const TabButtons: React.FC = () => {
|
const TabButtons: React.FC = () => {
|
||||||
let router = useIonRouter();
|
let router = useIonRouter();
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const { user, error, isLoading } = useUser();
|
||||||
|
|
||||||
let {
|
let {
|
||||||
url_push_after_user_confirm,
|
url_push_after_user_confirm,
|
||||||
@@ -130,6 +136,33 @@ const TabButtons: React.FC = () => {
|
|||||||
{/* */}
|
{/* */}
|
||||||
|
|
||||||
{/* 003_remove_setting_screen, hide setting on bottom tabs */}
|
{/* 003_remove_setting_screen, hide setting on bottom tabs */}
|
||||||
|
{user ? (
|
||||||
|
<IonTabButton
|
||||||
|
tab="setting"
|
||||||
|
onClick={() => goSwitchPage(SETTING_LINK)}
|
||||||
|
style={{ color: tab_active == SETTING_LINK ? active_color : inactive_color }}
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
width: '50px',
|
||||||
|
height: '50px',
|
||||||
|
padding: 5,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
width: '100%',
|
||||||
|
height: '100%',
|
||||||
|
backgroundImage: `url("${getImageUrlFromFile(user.collectionId, user.id, user.avatar)}")`,
|
||||||
|
backgroundSize: 'cover',
|
||||||
|
backgroundPosition: 'center',
|
||||||
|
//
|
||||||
|
borderRadius: '50%',
|
||||||
|
}}
|
||||||
|
></div>
|
||||||
|
</div>
|
||||||
|
</IonTabButton>
|
||||||
|
) : (
|
||||||
<IonTabButton
|
<IonTabButton
|
||||||
tab="setting"
|
tab="setting"
|
||||||
onClick={() => goSwitchPage(SETTING_LINK)}
|
onClick={() => goSwitchPage(SETTING_LINK)}
|
||||||
@@ -137,8 +170,9 @@ const TabButtons: React.FC = () => {
|
|||||||
>
|
>
|
||||||
<IonIcon aria-hidden="true" icon={settingsOutline} size="large" />
|
<IonIcon aria-hidden="true" icon={settingsOutline} size="large" />
|
||||||
</IonTabButton>
|
</IonTabButton>
|
||||||
|
)}
|
||||||
|
|
||||||
{DEBUG ? (
|
{false ? (
|
||||||
<IonTabButton
|
<IonTabButton
|
||||||
tab="debug"
|
tab="debug"
|
||||||
onClick={() => goSwitchPage(DEBUG_LINK)}
|
onClick={() => goSwitchPage(DEBUG_LINK)}
|
||||||
|
@@ -9,5 +9,5 @@ const root = createRoot(container!);
|
|||||||
root.render(
|
root.render(
|
||||||
<React.StrictMode>
|
<React.StrictMode>
|
||||||
<App />
|
<App />
|
||||||
</React.StrictMode>,
|
</React.StrictMode>
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user