diff --git a/vault-web/public/config.json b/vault-web/public/config.json index 0c616c27..6d0289f6 100644 --- a/vault-web/public/config.json +++ b/vault-web/public/config.json @@ -3,5 +3,6 @@ "oauth2ClientId": "7ZEK2BNCEVYEJIZC5OR3TR6PQDUJ4NP3", "oauth2ClientSecret": "VWTMENEWUYWH6G523CEV5CWOCHH7FMECW36PPQENOASYYZOQJOSGQXSR2Y62N3HB", "appStoreUrl": "https://apps.apple.com/app/koofr-vault/id6468869124", - "googlePlayUrl": "https://play.google.com/store/apps/details?id=net.koofr.vault" + "googlePlayUrl": "https://play.google.com/store/apps/details?id=net.koofr.vault", + "fDroidUrl": "https://f-droid.org/en/packages/net.koofr.vault/" } \ No newline at end of file diff --git a/vault-web/src/assets/images/apps/f-droid.png b/vault-web/src/assets/images/apps/f-droid.png new file mode 100644 index 00000000..60ffc6c9 Binary files /dev/null and b/vault-web/src/assets/images/apps/f-droid.png differ diff --git a/vault-web/src/assets/images/apps/f-droid@2x.png b/vault-web/src/assets/images/apps/f-droid@2x.png new file mode 100644 index 00000000..b69f985b Binary files /dev/null and b/vault-web/src/assets/images/apps/f-droid@2x.png differ diff --git a/vault-web/src/components/intro/IntroModal.tsx b/vault-web/src/components/intro/IntroModal.tsx index 8a06875e..2c4a0ea6 100644 --- a/vault-web/src/components/intro/IntroModal.tsx +++ b/vault-web/src/components/intro/IntroModal.tsx @@ -10,13 +10,15 @@ import { useState, } from 'react'; +import appStoreImage from '../../assets/images/apps/app-store.png'; +import appStore2xImage from '../../assets/images/apps/app-store@2x.png'; +import fDroidImage from '../../assets/images/apps/f-droid.png'; +import fDroid2xImage from '../../assets/images/apps/f-droid@2x.png'; +import googlePlayImage from '../../assets/images/apps/google-play.png'; +import googlePlay2xImage from '../../assets/images/apps/google-play@2x.png'; import intro01Image from '../../assets/images/intro/intro-01.png'; import intro012xImage from '../../assets/images/intro/intro-01@2x.png'; import intro02Image from '../../assets/images/intro/intro-02.png'; -import googlePlayImage from '../../assets/images/apps/google-play.png'; -import googlePlay2xImage from '../../assets/images/apps/google-play@2x.png'; -import appStoreImage from '../../assets/images/apps/app-store.png'; -import appStore2xImage from '../../assets/images/apps/app-store@2x.png'; import intro022xImage from '../../assets/images/intro/intro-02@2x.png'; import intro03Image from '../../assets/images/intro/intro-03.png'; import intro032xImage from '../../assets/images/intro/intro-03@2x.png'; @@ -36,6 +38,7 @@ import introEndImage from '../../assets/images/intro/intro-end.png'; import introEnd2xImage from '../../assets/images/intro/intro-end@2x.png'; import introStartImage from '../../assets/images/intro/intro-start.png'; import introStart2xImage from '../../assets/images/intro/intro-start@2x.png'; +import { useConfig } from '../../config'; import { buttonStyle } from '../../styles/mixins/buttons'; import { imgRetinaBase } from '../../styles/mixins/images'; @@ -51,7 +54,6 @@ import { ModalHeader, ModalTitle, } from '../modal/Modal'; -import { useConfig } from '../../config'; const introButtonColor = '#2286f7'; const introButtonColorHover = '#0870e6'; @@ -322,7 +324,8 @@ const IntroStep5 = memo(() => {

{config.appStoreUrl !== undefined || - config.googlePlayUrl !== undefined ? ( + config.googlePlayUrl !== undefined || + config.fDroidUrl !== undefined ? (
{ ) : null} {config.appStoreUrl !== undefined ? ( - + { /> ) : null} + + {config.fDroidUrl !== undefined ? ( + + + + ) : null}
) : null} diff --git a/vault-web/src/config.ts b/vault-web/src/config.ts index 41eaa7e4..89ef5e47 100644 --- a/vault-web/src/config.ts +++ b/vault-web/src/config.ts @@ -6,6 +6,7 @@ export interface Config { oauth2ClientSecret: string; appStoreUrl?: string; googlePlayUrl?: string; + fDroidUrl?: string; } export async function loadConfig(): Promise { diff --git a/vault-web/src/pages/LandingPageOfficial.tsx b/vault-web/src/pages/LandingPageOfficial.tsx index 425305d0..29d359bb 100644 --- a/vault-web/src/pages/LandingPageOfficial.tsx +++ b/vault-web/src/pages/LandingPageOfficial.tsx @@ -3,14 +3,16 @@ import { css, cx } from '@emotion/css'; import { memo } from 'react'; import Typewriter from 'typewriter-effect'; +import appStoreImage from '../assets/images/apps/app-store.png'; +import appStore2xImage from '../assets/images/apps/app-store@2x.png'; +import fDroidImage from '../assets/images/apps/f-droid.png'; +import fDroid2xImage from '../assets/images/apps/f-droid@2x.png'; +import googlePlayImage from '../assets/images/apps/google-play.png'; +import googlePlay2xImage from '../assets/images/apps/google-play@2x.png'; import arrowDownImage from '../assets/images/landing/arrow-down.png'; import arrowDown2xImage from '../assets/images/landing/arrow-down@2x.png'; import arrowRightImage from '../assets/images/landing/arrow-right.png'; import arrowRight2xImage from '../assets/images/landing/arrow-right@2x.png'; -import googlePlayImage from '../assets/images/apps/google-play.png'; -import googlePlay2xImage from '../assets/images/apps/google-play@2x.png'; -import appStoreImage from '../assets/images/apps/app-store.png'; -import appStore2xImage from '../assets/images/apps/app-store@2x.png'; import graphic1Image from '../assets/images/landing/graphic-1.png'; import graphic12xImage from '../assets/images/landing/graphic-1@2x.png'; import graphic2Image from '../assets/images/landing/graphic-2.png'; @@ -38,10 +40,10 @@ import { BaseAnchorButton } from '../components/Button'; import { GitRelease } from '../components/GitRelease'; import { GitRevision } from '../components/GitRevision'; import { RetinaImage } from '../components/RetinaImage'; +import { useConfig } from '../config'; import { buttonStyle } from '../styles/mixins/buttons'; import { allStates } from '../styles/mixins/hover'; import { useDocumentTitle } from '../utils/useDocumentTitle'; -import { useConfig } from '../config'; const landingButtonStyle = buttonStyle( '#1683fb', @@ -314,7 +316,8 @@ export const LandingPageOfficial = memo(() => { {config.appStoreUrl !== undefined || - config.googlePlayUrl !== undefined ? ( + config.googlePlayUrl !== undefined || + config.fDroidUrl !== undefined ? (
{ ) : null} {config.appStoreUrl !== undefined ? ( - + { /> ) : null} + + {config.fDroidUrl !== undefined ? ( + + + + ) : null}
) : null} diff --git a/vault-web/src/pages/MobilePage.tsx b/vault-web/src/pages/MobilePage.tsx index e0b98e9e..9e8f3f9d 100644 --- a/vault-web/src/pages/MobilePage.tsx +++ b/vault-web/src/pages/MobilePage.tsx @@ -4,6 +4,8 @@ import { useLocation } from 'react-router-dom'; import appStoreImage from '../assets/images/apps/app-store.png'; import appStore2xImage from '../assets/images/apps/app-store@2x.png'; +import fDroidImage from '../assets/images/apps/f-droid.png'; +import fDroid2xImage from '../assets/images/apps/f-droid@2x.png'; import googlePlayImage from '../assets/images/apps/google-play.png'; import googlePlay2xImage from '../assets/images/apps/google-play@2x.png'; import { LinkButton } from '../components/Button'; @@ -75,12 +77,13 @@ export const MobilePage = memo(() => {

{config.appStoreUrl !== undefined || - config.googlePlayUrl !== undefined ? ( + config.googlePlayUrl !== undefined || + config.fDroidUrl !== undefined ? (
{config.googlePlayUrl !== undefined ? ( @@ -89,7 +92,7 @@ export const MobilePage = memo(() => { target="_blank" rel="noreferrer" className={css` - margin-right: 20px; + margin-bottom: 15px; `} > { ) : null} {config.appStoreUrl !== undefined ? ( - + { /> ) : null} + + {config.fDroidUrl !== undefined ? ( + + + + ) : null}
) : null}