wip
Seto Elkahfi committed
Aug 4, 2024 at 15:57 UTC
2bade6d92d19e60efb4d484a3858f90927c01f8d
16 files changed
+53
-22
frontend/splitfire-desktop/app/_ui/LoadingView.tsx
new
+12
@@ -0,0 +1,12 @@
1
+import { Col, Container, Spinner } from "react-bootstrap";
2
+
3
+export function LoadingView() {
4
+
5
+ return <Container>
6
+ <Col className="align-self-center" xs={12}>
7
+ <Spinner animation="grow" role="status" variant="danger">
8
+ <span className="visually-hidden">Loading...</span>
9
+ </Spinner>
10
+ </Col>
11
+ </Container>
12
+}
\ No newline at end of file
frontend/splitfire-desktop/app/_ui/components/tooltip.tsx
+1
-1
@@ -2,7 +2,7 @@
2
3
import * as React from 'react'
4
import * as TooltipPrimitive from '@radix-ui/react-tooltip'
5
-import { cn } from '@/app/_lib/utils'
5
+import { cn } from '@/lib/utils'
6
7
const TooltipProvider = TooltipPrimitive.Provider
8
frontend/splitfire-desktop/app/debug/page.tsx
+1
-1
@@ -8,9 +8,9 @@ import {
8
} from "../../lib/tauriHandler";
9
import { Button } from "../_ui/components/button";
10
import { useEffect, useState } from "react";
11
-import { LoadingView } from "../_src/components/templates/LoadingView";
11
import { TauriResponse } from "@/models/shared";
12
import { useLogger } from "../../lib/logger";
13
+import { LoadingView } from "../_ui/LoadingView";
14
15
enum State {
16
LOADING,
frontend/splitfire-desktop/app/login/page.tsx
+5
-5
@@ -2,16 +2,16 @@
2
3
import * as Form from "@radix-ui/react-form";
4
import { invoke } from "@tauri-apps/api/tauri";
5
-import { TAURI_ACCOUNT_LOGIN } from "../../lib/tauriHandler";
6
-import { Button } from "../_ui/components/button";
5
+import { TAURI_ACCOUNT_LOGIN } from "@/lib/tauriHandler";
6
+import { Button } from "@/app/_ui/components/button";
7
import { useState } from "react";
8
-import { UserContext } from "../../lib/CurrentUserContext";
8
+import { UserContext } from "@/lib/CurrentUserContext";
9
import { CurrentUser, CurrentUserType, db } from "../../lib/db";
10
import { AccountLoginResponse } from "@/models/account";
11
-import { Mode } from "../_src/components/player/models/Mode";
12
-import { LoadingView } from "../_src/components/templates/LoadingView";
11
import { useRouter } from "next/navigation";
12
import { TauriResponse } from "@/models/shared";
13
+import { Mode } from "@/models/mode";
14
+import { LoadingView } from "../_ui/LoadingView";
15
16
enum State {
17
LOADING,
frontend/splitfire-desktop/app/play/_components/volume-slider.tsx
+1
-1
@@ -1,4 +1,4 @@
1
-import { ModeDemucs } from "@/app/_src/components/player/models/Mode"
1
+import { ModeDemucs } from "@/models/mode"
2
import { Container, Row, Col, Form } from "react-bootstrap"
3
4
export function VolumeSlider(props: { _onVolumeChange: (mode: ModeDemucs, value: string) => void, isHidden: boolean }) {
frontend/splitfire-desktop/app/split/_components/button-split.tsx
+1
-1
@@ -51,7 +51,7 @@ export default function ButtonGenerateBackingTracks({
51
52
if (goToLogin) {
53
router.push("/login");
54
- return;
54
+ return <></>;
55
}
56
57
if (state === State.LOADING) {
frontend/splitfire-desktop/app/split/_components/votes-view-main.tsx
+1
-1
@@ -99,7 +99,7 @@ export default function MainVotesView(props: {
99
100
if (goToLogin) {
101
router.push("/login");
102
- return;
102
+ return <></>;
103
}
104
105
return (
frontend/splitfire-desktop/app/split/_components/votes-view.tsx
+1
-1
@@ -32,7 +32,7 @@ export default function VotesView({
32
if (goToPlayer) {
33
log.debug("Go to player");
34
router.push(`/play?audioFileId=${audioFile?.id}`);
35
- return;
35
+ return <></>;
36
}
37
38
const onVotesAggregateUpdate = (votesAggregate: number) => {
frontend/splitfire-desktop/app/split/page.tsx
+5
-5
@@ -1,14 +1,14 @@
1
"use client";
2
3
import { useSearchParams } from "next/navigation";
4
-import { useLogger } from "../../lib/logger";
4
+import { useLogger } from "@/lib/logger";
5
import { useEffect, useState } from "react";
6
import { invoke } from "@tauri-apps/api";
7
-import { TAURI_CONTENT_SONG_BRIDGE_DETAIL } from "../../lib/tauriHandler";
8
-import { SongProvider } from "../../models/SongResponse";
9
-import { SongBridgeResponse } from "../_src/components/pages/esef/SplitFireView";
10
-import { SongProviderVote } from "../../models/SongVotesDetailResponse";
7
+import { TAURI_CONTENT_SONG_BRIDGE_DETAIL } from "@/lib/tauriHandler";
8
+import { SongProvider } from "@/models/SongResponse";
9
+import { SongProviderVote } from "@/models/SongVotesDetailResponse";
10
import SongVotes from "./_components/song-votes";
11
+import { SongBridgeResponse } from "@/models/content";
12
13
export default function Page() {
14
const log = useLogger("Play");
frontend/splitfire-desktop/lib/axios.ts
new
+12
@@ -0,0 +1,12 @@
1
+import axios from "axios";
2
+
3
+let host = process.env.REACT_APP_SPLITFIRE_API_HOST;
4
+
5
+const client = axios.create({
6
+ baseURL: `https://${host}/api/v1/`,
7
+ headers: {
8
+ "Content-Type": "application/json",
9
+ },
10
+});
11
+
12
+export default client;
frontend/splitfire-desktop/lib/db.ts
+6
-6
@@ -1,11 +1,11 @@
1
import Dexie, { Table } from "dexie";
2
-import { Mode, ModeDemucs } from "../app/_src/components/player/models/Mode";
2
import User from "../models/user";
4
-import { AudioFile } from "../app/_src/components/player/models/AudioFile";
5
-import axios from "../app/_src/lib/axios";
6
-import { Result } from "../app/_src/components/player/models/Result";
3
+import axios from "@/lib/axios"; // Move to rust
4
import { Logger } from "tslog";
8
-import isTauri from "../app/_src/lib/isTauri";
5
+import { AudioFile } from "@/models/audio-file";
6
+import { ModeDemucs } from "@/models/mode";
7
+import { Mode } from "fs";
8
+import { Result } from "@/models/result";
9
10
// Legacy Spleeter result file
11
export interface AudioFiles {
@@ -48,7 +48,7 @@ export class SplitfireDB extends Dexie {
48
49
log = new Logger({
50
name: "SplitfireDB",
51
- type: isTauri() ? "json" : "pretty",
51
+ type: "json",
52
});
53
54
constructor() {
frontend/splitfire-desktop/models/audio-file.ts
renamed
frontend/splitfire-desktop/models/content.ts
+7
@@ -26,4 +26,11 @@ export interface SongProviderResponse {
26
message: string,
27
song_provider: SongProvider
28
votes: SongProviderVote[]
29
+}
30
+
31
+export interface SongBridgeResponse {
32
+ status: TauriResponse,
33
+ message: string,
34
+ song_provider: SongProvider
35
+ votes: SongProviderVote[]
36
}
\ No newline at end of file