Can download APK from web app
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is passing
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	continuous-integration/drone/push Build is passing
				
			This commit is contained in:
		@@ -126,6 +126,14 @@ pub struct AppConfig {
 | 
				
			|||||||
    /// Redis password
 | 
					    /// Redis password
 | 
				
			||||||
    #[clap(long, env, default_value = "secretredis")]
 | 
					    #[clap(long, env, default_value = "secretredis")]
 | 
				
			||||||
    redis_password: String,
 | 
					    redis_password: String,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /// Application download URL
 | 
				
			||||||
 | 
					    #[clap(
 | 
				
			||||||
 | 
					        long,
 | 
				
			||||||
 | 
					        env,
 | 
				
			||||||
 | 
					        default_value = "https://gitea.communiquons.org/pierre/MoneyMgr/releases/download/latest/moneymgr_mobile_arm64-v8a.apk"
 | 
				
			||||||
 | 
					    )]
 | 
				
			||||||
 | 
					    pub apk_download_url: String,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
lazy_static::lazy_static! {
 | 
					lazy_static::lazy_static! {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -70,6 +70,7 @@ impl Default for ServerConstraints {
 | 
				
			|||||||
struct ServerConfig {
 | 
					struct ServerConfig {
 | 
				
			||||||
    auth_disabled: bool,
 | 
					    auth_disabled: bool,
 | 
				
			||||||
    oidc_provider_name: &'static str,
 | 
					    oidc_provider_name: &'static str,
 | 
				
			||||||
 | 
					    apk_download_url: &'static str,
 | 
				
			||||||
    accounts_types: &'static [AccountTypeDesc],
 | 
					    accounts_types: &'static [AccountTypeDesc],
 | 
				
			||||||
    constraints: ServerConstraints,
 | 
					    constraints: ServerConstraints,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -79,6 +80,7 @@ impl Default for ServerConfig {
 | 
				
			|||||||
        Self {
 | 
					        Self {
 | 
				
			||||||
            auth_disabled: AppConfig::get().is_auth_disabled(),
 | 
					            auth_disabled: AppConfig::get().is_auth_disabled(),
 | 
				
			||||||
            oidc_provider_name: AppConfig::get().openid_provider().name,
 | 
					            oidc_provider_name: AppConfig::get().openid_provider().name,
 | 
				
			||||||
 | 
					            apk_download_url: AppConfig::get().apk_download_url.as_str(),
 | 
				
			||||||
            constraints: Default::default(),
 | 
					            constraints: Default::default(),
 | 
				
			||||||
            accounts_types: &ACCOUNT_TYPES,
 | 
					            accounts_types: &ACCOUNT_TYPES,
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,6 +3,7 @@ import { APIClient } from "./ApiClient";
 | 
				
			|||||||
export interface ServerConfig {
 | 
					export interface ServerConfig {
 | 
				
			||||||
  auth_disabled: boolean;
 | 
					  auth_disabled: boolean;
 | 
				
			||||||
  oidc_provider_name: string;
 | 
					  oidc_provider_name: string;
 | 
				
			||||||
 | 
					  apk_download_url: string;
 | 
				
			||||||
  accounts_types: AccountType[];
 | 
					  accounts_types: AccountType[];
 | 
				
			||||||
  constraints: ServerConstraints;
 | 
					  constraints: ServerConstraints;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
import { mdiApi, mdiCash } from "@mdi/js";
 | 
					import { mdiApi, mdiCash } from "@mdi/js";
 | 
				
			||||||
import Icon from "@mdi/react";
 | 
					import Icon from "@mdi/react";
 | 
				
			||||||
 | 
					import AndroidIcon from "@mui/icons-material/Android";
 | 
				
			||||||
import CloudDownloadIcon from "@mui/icons-material/CloudDownload";
 | 
					import CloudDownloadIcon from "@mui/icons-material/CloudDownload";
 | 
				
			||||||
import LogoutIcon from "@mui/icons-material/Logout";
 | 
					import LogoutIcon from "@mui/icons-material/Logout";
 | 
				
			||||||
import SettingsIcon from "@mui/icons-material/Settings";
 | 
					import SettingsIcon from "@mui/icons-material/Settings";
 | 
				
			||||||
@@ -10,6 +11,7 @@ import MenuItem from "@mui/material/MenuItem";
 | 
				
			|||||||
import Toolbar from "@mui/material/Toolbar";
 | 
					import Toolbar from "@mui/material/Toolbar";
 | 
				
			||||||
import Typography from "@mui/material/Typography";
 | 
					import Typography from "@mui/material/Typography";
 | 
				
			||||||
import * as React from "react";
 | 
					import * as React from "react";
 | 
				
			||||||
 | 
					import { ServerApi } from "../api/ServerApi";
 | 
				
			||||||
import { useAuthInfo } from "./BaseAuthenticatedPage";
 | 
					import { useAuthInfo } from "./BaseAuthenticatedPage";
 | 
				
			||||||
import { DarkThemeButton } from "./DarkThemeButtonWidget";
 | 
					import { DarkThemeButton } from "./DarkThemeButtonWidget";
 | 
				
			||||||
import { PublicModeButton } from "./PublicModeButtonWidget";
 | 
					import { PublicModeButton } from "./PublicModeButtonWidget";
 | 
				
			||||||
@@ -100,6 +102,18 @@ export function MoneyWebAppBar(p: {
 | 
				
			|||||||
              </MenuItem>
 | 
					              </MenuItem>
 | 
				
			||||||
            </RouterLink>
 | 
					            </RouterLink>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            {/* APK download */}
 | 
				
			||||||
 | 
					            <RouterLink to={ServerApi.Config.apk_download_url}>
 | 
				
			||||||
 | 
					              <MenuItem>
 | 
				
			||||||
 | 
					                <ListItemIcon>
 | 
				
			||||||
 | 
					                  <AndroidIcon />
 | 
				
			||||||
 | 
					                </ListItemIcon>
 | 
				
			||||||
 | 
					                <ListItemText secondary="Scan expenses from your smartphone">
 | 
				
			||||||
 | 
					                  Mobile Application
 | 
				
			||||||
 | 
					                </ListItemText>
 | 
				
			||||||
 | 
					              </MenuItem>
 | 
				
			||||||
 | 
					            </RouterLink>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <Divider />
 | 
					            <Divider />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            {/* Sign out */}
 | 
					            {/* Sign out */}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user