Compare commits

...
Author SHA1 Message Date
Brandon Thomas 2bb76424ae info 2025-06-20 08:35:51 -04:00
Brandon Thomas e30b399a12 more app info 2025-06-20 08:33:57 -04:00
6 changed files with 38 additions and 24 deletions
@@ -1,5 +1,6 @@
use crate::core::commands::response::shorthand::InfallibleResponse;
use crate::core::commands::response::success_response_wrapper::SerializeMarker;
use crate::core::state::app_env_configs::app_env_configs::AppEnvConfigs;
use crate::core::state::os_platform::OsPlatform;
use crate::services::fal::commands::fal_background_removal_command::FalBackgroundRemovalSuccessResponse;
use base64::prelude::BASE64_STANDARD;
@@ -10,31 +11,38 @@ use image::ImageReader;
use log::info;
use serde_derive::Serialize;
use std::io::Cursor;
use tauri::State;
#[derive(Debug, Serialize)]
pub struct BuildInfoResponse {
pub struct AppInfoResponse {
pub build_timestamp: DateTime<Utc>,
pub git_commit_id: Option<String>,
pub git_commit_short_id: Option<String>,
pub git_commit_timestamp: Option<DateTime<Utc>>,
pub storyteller_host: String,
}
impl SerializeMarker for BuildInfoResponse {}
impl SerializeMarker for AppInfoResponse {}
#[tauri::command]
pub fn get_build_info_command() -> InfallibleResponse<BuildInfoResponse> {
info!("get_build_info_command called...");
pub fn get_app_info_command(
app_env_configs: State<'_, AppEnvConfigs>,
) -> InfallibleResponse<AppInfoResponse> {
info!("get_app_info_command called...");
let build_timestamp = build_metadata::build_timestamp();
let git_commit_id = build_metadata::git_commit_id();
let git_commit_short_id = build_metadata::git_commit_short_id();
let git_commit_timestamp = build_metadata::git_commit_timestamp();
BuildInfoResponse {
let storyteller_host = app_env_configs.storyteller_host.to_api_hostname();
AppInfoResponse {
build_timestamp,
git_commit_id: git_commit_id.map(|s| s.to_string()),
git_commit_short_id: git_commit_short_id.map(|s| s.to_string()),
git_commit_timestamp,
storyteller_host,
}.into()
}
@@ -1,6 +1,6 @@
pub mod app_preferences;
pub mod enqueue;
pub mod flip_image;
pub mod get_build_info_command;
pub mod get_app_info_command;
pub mod platform_info_command;
pub mod response;
+2 -2
View File
@@ -9,7 +9,7 @@ use crate::core::commands::enqueue::image::enqueue_text_to_image_command::enqueu
use crate::core::commands::enqueue::object::enqueue_image_to_3d_object_command::enqueue_image_to_3d_object_command;
use crate::core::commands::enqueue::video::enqueue_image_to_video_command::enqueue_image_to_video_command;
use crate::core::commands::flip_image::flip_image;
use crate::core::commands::get_build_info_command::get_build_info_command;
use crate::core::commands::get_app_info_command::get_app_info_command;
use crate::core::commands::platform_info_command::platform_info_command;
use crate::core::state::app_env_configs::app_env_configs::AppEnvConfigs;
use crate::core::state::app_preferences::app_preferences_manager::load_app_preferences_or_default;
@@ -175,8 +175,8 @@ pub fn run() {
fal_hunyuan_image_to_3d_command,
fal_kling_image_to_video_command,
flip_image,
get_app_info_command,
get_app_preferences_command,
get_build_info_command,
get_fal_api_key_command,
open_sora_login_command,
platform_info_command,
@@ -1,21 +1,21 @@
import { useEffect, useState } from "react";
import {
GetBuildInfo,
GetBuildInfoPayload,
GetAppInfo,
GetAppInfoPayload,
} from "@storyteller/tauri-api";
import { Label } from "@storyteller/ui-label";
interface AboutSettingsPaneProps {}
export const AboutSettingsPane = (args: AboutSettingsPaneProps) => {
const [buildInfo, setBuildInfo] = useState<
GetBuildInfoPayload | undefined
const [appInfo, setAppInfo] = useState<
GetAppInfoPayload | undefined
>(undefined);
useEffect(() => {
const fetchData = async () => {
const prefs = await GetBuildInfo();
setBuildInfo(prefs.payload);
const prefs = await GetAppInfo();
setAppInfo(prefs.payload);
};
fetchData();
}, []);
@@ -28,22 +28,27 @@ export const AboutSettingsPane = (args: AboutSettingsPaneProps) => {
<Label htmlFor="play-sounds">
Build Timestamp
</Label>
<div>{buildInfo?.build_timestamp}</div>
<div>{appInfo?.build_timestamp}</div>
</div>
<div className="space-y-1">
<Label htmlFor="success-sound">Git Commit ID</Label>
<div>{buildInfo?.git_commit_id}</div>
<div>{appInfo?.git_commit_id}</div>
</div>
<div className="space-y-1">
<Label htmlFor="success-sound">Git Commit Short ID</Label>
<div>{buildInfo?.git_commit_short_id}</div>
<div>{appInfo?.git_commit_short_id}</div>
</div>
<div className="space-y-1">
<Label htmlFor="success-sound">Git Commit Timestamp</Label>
<div>{buildInfo?.git_commit_timestamp}</div>
<div>{appInfo?.git_commit_timestamp}</div>
</div>
<div className="space-y-1">
<Label htmlFor="success-sound">Artcraft Host</Label>
<div>{appInfo?.storyteller_host}</div>
</div>
</div>
</>
+1 -1
View File
@@ -14,5 +14,5 @@ export * from "./lib/sora/CheckSoraSession.js";
export * from "./lib/sora/LogoutSoraSession.js";
export * from "./lib/sora/SoraImageRemix.js";
export * from "./lib/sora/useSoraLoginListener.js";
export * from "./lib/system/GetBuildInfo.js";
export * from "./lib/system/GetAppInfo.js";
export * from "./lib/sora/waitForSoraLogin.js";
@@ -1,22 +1,23 @@
import { invoke } from "@tauri-apps/api/core";
import { CommandResult } from "../common/CommandStatus";
export interface GetBuildInfoSuccess extends CommandResult {
payload: GetBuildInfoPayload;
export interface GetAppInfoSuccess extends CommandResult {
payload: GetAppInfoPayload;
}
export interface GetBuildInfoPayload {
export interface GetAppInfoPayload {
build_timestamp: string;
git_commit_id?: string | null;
git_commit_short_id?: string | null;
git_commit_timestamp?: string | null;
storyteller_host?: string | null;
}
// Returns the Success and Error variants directly.
// Throws on Network/Tauri errors.
export const GetBuildInfo = async () : Promise<GetBuildInfoSuccess> => {
export const GetAppInfo = async () : Promise<GetAppInfoSuccess> => {
try {
return await invoke("get_build_info_command") as GetBuildInfoSuccess;
return await invoke("get_app_info_command") as GetAppInfoSuccess;
} catch (error) {
// NB: Endpoint should be infalliable
throw error;