feat: open Splatnet3 in app
parent
f8af485c90
commit
6d5b0f6bb2
|
|
@ -35,7 +35,31 @@ function detectAndInject() {
|
||||||
detectAndInject();
|
detectAndInject();
|
||||||
"#;
|
"#;
|
||||||
|
|
||||||
// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
|
#[tauri::command]
|
||||||
|
async fn open_splatnet(app: tauri::AppHandle, gtoken: String) -> Option<()> {
|
||||||
|
let _window = WindowBuilder::new(
|
||||||
|
&app,
|
||||||
|
"splatnet3",
|
||||||
|
tauri::WindowUrl::App("https://api.lp1.av5ja.srv.nintendo.net/".into()),
|
||||||
|
)
|
||||||
|
.title("Splatnet3")
|
||||||
|
.center()
|
||||||
|
.inner_size(1040.0, 960.0)
|
||||||
|
.initialization_script(&format!(
|
||||||
|
r##"
|
||||||
|
const gtoken = "_gtoken={gtoken}";
|
||||||
|
if (!document.cookie.includes(gtoken)) {{
|
||||||
|
document.cookie = gtoken;
|
||||||
|
window.location.reload();
|
||||||
|
}}
|
||||||
|
"##
|
||||||
|
))
|
||||||
|
.build()
|
||||||
|
.ok()?;
|
||||||
|
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
async fn open_login_window(app: tauri::AppHandle, url: String) -> Option<String> {
|
async fn open_login_window(app: tauri::AppHandle, url: String) -> Option<String> {
|
||||||
let encoded = urlencoding::encode(&url);
|
let encoded = urlencoding::encode(&url);
|
||||||
|
|
@ -79,7 +103,7 @@ async fn open_login_window(app: tauri::AppHandle, url: String) -> Option<String>
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
tauri::Builder::default()
|
tauri::Builder::default()
|
||||||
.invoke_handler(tauri::generate_handler![open_login_window])
|
.invoke_handler(tauri::generate_handler![open_login_window, open_splatnet])
|
||||||
.run(tauri::generate_context!())
|
.run(tauri::generate_context!())
|
||||||
.expect("error while running tauri application");
|
.expect("error while running tauri application");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { invoke } from '@tauri-apps/api';
|
||||||
import { ErrorContent } from 'components/ErrorContent';
|
import { ErrorContent } from 'components/ErrorContent';
|
||||||
import { Loading } from 'components/Loading';
|
import { Loading } from 'components/Loading';
|
||||||
import { LogPanel, RunPanel } from 'components/RunPanel';
|
import { LogPanel, RunPanel } from 'components/RunPanel';
|
||||||
|
|
@ -10,7 +11,7 @@ import { getConfig, getProfile } from 'services/config';
|
||||||
import { composeLoadable } from 'utils/composeLoadable';
|
import { composeLoadable } from 'utils/composeLoadable';
|
||||||
|
|
||||||
export const Home: React.FC = () => {
|
export const Home: React.FC = () => {
|
||||||
let { loading, error, retry } = composeLoadable({
|
let { loading, error, retry, result } = composeLoadable({
|
||||||
config: usePromise(getConfig),
|
config: usePromise(getConfig),
|
||||||
profile: usePromise(() => getProfile(0)),
|
profile: usePromise(() => getProfile(0)),
|
||||||
});
|
});
|
||||||
|
|
@ -27,6 +28,13 @@ export const Home: React.FC = () => {
|
||||||
<ErrorContent error={error} retry={retry} />
|
<ErrorContent error={error} retry={retry} />
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
|
const gtoken = result?.profile.state.loginState?.gToken
|
||||||
|
const onOpenSplatnet3 = async () => {
|
||||||
|
await invoke('open_splatnet', {
|
||||||
|
gtoken,
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
return <div className='flex p-2 w-full h-full gap-2'>
|
return <div className='flex p-2 w-full h-full gap-2'>
|
||||||
<div className='max-w-full md:max-w-sm flex-auto'>
|
<div className='max-w-full md:max-w-sm flex-auto'>
|
||||||
|
|
@ -35,6 +43,7 @@ export const Home: React.FC = () => {
|
||||||
<RunPanel />
|
<RunPanel />
|
||||||
<Link to='/settings' className='btn'>{t('设置')}</Link>
|
<Link to='/settings' className='btn'>{t('设置')}</Link>
|
||||||
<a className='btn' href={STAT_INK} target='_blank' rel='noreferrer'>{t('前往 stat.ink')}</a>
|
<a className='btn' href={STAT_INK} target='_blank' rel='noreferrer'>{t('前往 stat.ink')}</a>
|
||||||
|
<button className='btn' onClick={onOpenSplatnet3}>{t('打开鱿鱼圈3')}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<LogPanel className='hidden sm:block flex-1' />
|
<LogPanel className='hidden sm:block flex-1' />
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue