mirror of
https://github.com/anidl/multi-downloader-nx.git
synced 2026-04-21 16:31:55 +00:00
Add version info to help menu in GUI
This commit is contained in:
parent
7872bc343d
commit
b6187c48a8
8 changed files with 33 additions and 2 deletions
1
@types/messageHandler.d.ts
vendored
1
@types/messageHandler.d.ts
vendored
|
|
@ -6,6 +6,7 @@ import { LanguageItem } from '../modules/module.langsData';
|
||||||
export interface MessageHandler {
|
export interface MessageHandler {
|
||||||
name: string
|
name: string
|
||||||
auth: (data: AuthData) => Promise<AuthResponse>;
|
auth: (data: AuthData) => Promise<AuthResponse>;
|
||||||
|
version: () => Promise<string>;
|
||||||
checkToken: () => Promise<CheckTokenResponse>;
|
checkToken: () => Promise<CheckTokenResponse>;
|
||||||
search: (data: SearchData) => Promise<SearchResponse>,
|
search: (data: SearchData) => Promise<SearchResponse>,
|
||||||
availableDubCodes: () => Promise<string[]>,
|
availableDubCodes: () => Promise<string[]>,
|
||||||
|
|
|
||||||
1
@types/ws.d.ts
vendored
1
@types/ws.d.ts
vendored
|
|
@ -18,6 +18,7 @@ export type UnknownWSMessage = {
|
||||||
|
|
||||||
export type MessageTypes = {
|
export type MessageTypes = {
|
||||||
'auth': [AuthData, AuthResponse],
|
'auth': [AuthData, AuthResponse],
|
||||||
|
'version': [undefined, string],
|
||||||
'checkToken': [undefined, CheckTokenResponse],
|
'checkToken': [undefined, CheckTokenResponse],
|
||||||
'search': [SearchData, SearchResponse],
|
'search': [SearchData, SearchResponse],
|
||||||
'default': [string, unknown],
|
'default': [string, unknown],
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,18 @@ import { StoreState } from '../../provider/Store'
|
||||||
const MenuBar: React.FC = () => {
|
const MenuBar: React.FC = () => {
|
||||||
const [ openMenu, setMenuOpen ] = React.useState<'settings'|'help'|undefined>();
|
const [ openMenu, setMenuOpen ] = React.useState<'settings'|'help'|undefined>();
|
||||||
const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);
|
const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);
|
||||||
const [store] = useStore();
|
const [store, dispatch] = useStore();
|
||||||
|
|
||||||
|
const messageChannel = React.useContext(messageChannelContext);
|
||||||
|
const getVersion = async() => {
|
||||||
|
dispatch({
|
||||||
|
type: 'version',
|
||||||
|
payload: await messageChannel?.version()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
getVersion();
|
||||||
|
|
||||||
const transformService = (service: StoreState['service']) => {
|
const transformService = (service: StoreState['service']) => {
|
||||||
switch(service) {
|
switch(service) {
|
||||||
case 'crunchy':
|
case 'crunchy':
|
||||||
|
|
@ -92,6 +102,11 @@ const MenuBar: React.FC = () => {
|
||||||
}}>
|
}}>
|
||||||
Discord
|
Discord
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
<MenuItem onClick={() => {
|
||||||
|
handleClose();
|
||||||
|
}}>
|
||||||
|
Version: {store.version}
|
||||||
|
</MenuItem>
|
||||||
</Menu>
|
</Menu>
|
||||||
<Typography variant="h5" color="text.primary" component="div" align="center" sx={{flexGrow: 1}}>
|
<Typography variant="h5" color="text.primary" component="div" align="center" sx={{flexGrow: 1}}>
|
||||||
{transformService(store.service)}
|
{transformService(store.service)}
|
||||||
|
|
|
||||||
|
|
@ -214,6 +214,7 @@ const MessageChannelProvider: FCWithChildren = ({ children }) => {
|
||||||
const messageHandler: FrontEndMessages = {
|
const messageHandler: FrontEndMessages = {
|
||||||
name: "default",
|
name: "default",
|
||||||
auth: async (data) => (await messageAndResponse(socket, { name: 'auth', data })).data,
|
auth: async (data) => (await messageAndResponse(socket, { name: 'auth', data })).data,
|
||||||
|
version: async () => (await messageAndResponse(socket, { name: 'version', data: undefined })).data,
|
||||||
checkToken: async () => (await messageAndResponse(socket, { name: 'checkToken', data: undefined })).data,
|
checkToken: async () => (await messageAndResponse(socket, { name: 'checkToken', data: undefined })).data,
|
||||||
search: async (data) => (await messageAndResponse(socket, { name: 'search', data })).data,
|
search: async (data) => (await messageAndResponse(socket, { name: 'search', data })).data,
|
||||||
handleDefault: async (data) => (await messageAndResponse(socket, { name: 'default', data })).data,
|
handleDefault: async (data) => (await messageAndResponse(socket, { name: 'default', data })).data,
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ export type StoreState = {
|
||||||
episodeListing: Episode[];
|
episodeListing: Episode[];
|
||||||
downloadOptions: DownloadOptions,
|
downloadOptions: DownloadOptions,
|
||||||
service: 'crunchy'|'funi'|'hidive'|undefined,
|
service: 'crunchy'|'funi'|'hidive'|undefined,
|
||||||
|
version: string,
|
||||||
}
|
}
|
||||||
|
|
||||||
export type StoreAction<T extends (keyof StoreState)> = {
|
export type StoreAction<T extends (keyof StoreState)> = {
|
||||||
|
|
@ -51,6 +52,7 @@ const initialState: StoreState = {
|
||||||
},
|
},
|
||||||
service: undefined,
|
service: undefined,
|
||||||
episodeListing: [],
|
episodeListing: [],
|
||||||
|
version: '',
|
||||||
};
|
};
|
||||||
|
|
||||||
const Store: FCWithChildren = ({children}) => {
|
const Store: FCWithChildren = ({children}) => {
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import CrunchyHandler from './services/crunchyroll';
|
||||||
import FunimationHandler from './services/funimation';
|
import FunimationHandler from './services/funimation';
|
||||||
import HidiveHandler from './services/hidive';
|
import HidiveHandler from './services/hidive';
|
||||||
import WebSocketHandler from './websocket';
|
import WebSocketHandler from './websocket';
|
||||||
|
import packageJson from '../../package.json';
|
||||||
|
|
||||||
export default class ServiceHandler {
|
export default class ServiceHandler {
|
||||||
|
|
||||||
|
|
@ -51,6 +52,9 @@ export default class ServiceHandler {
|
||||||
return respond({ isOk: false, reason: new Error('No service selected') });
|
return respond({ isOk: false, reason: new Error('No service selected') });
|
||||||
respond(await this.service.auth(data));
|
respond(await this.service.auth(data));
|
||||||
});
|
});
|
||||||
|
this.ws.events.on('version', async (_, respond) => {
|
||||||
|
respond(packageJson.version);
|
||||||
|
});
|
||||||
this.ws.events.on('type', async (_, respond) => respond(this.service === undefined ? undefined : this.service.name as 'hidive'|'crunchy'|'funi'));
|
this.ws.events.on('type', async (_, respond) => respond(this.service === undefined ? undefined : this.service.name as 'hidive'|'crunchy'|'funi'));
|
||||||
this.ws.events.on('checkToken', async (_, respond) => {
|
this.ws.events.on('checkToken', async (_, respond) => {
|
||||||
if (this.service === undefined)
|
if (this.service === undefined)
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import { cfg } from '..';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import { console } from '../../../modules/log';
|
import { console } from '../../../modules/log';
|
||||||
import { getState, setState } from '../../../modules/module.cfg-loader';
|
import { getState, setState } from '../../../modules/module.cfg-loader';
|
||||||
|
import packageJson from '../../../package.json';
|
||||||
|
|
||||||
export default class Base {
|
export default class Base {
|
||||||
private state: GuiState;
|
private state: GuiState;
|
||||||
|
|
@ -19,6 +20,12 @@ export default class Base {
|
||||||
private queue: QueueItem[] = [];
|
private queue: QueueItem[] = [];
|
||||||
private workOnQueue = false;
|
private workOnQueue = false;
|
||||||
|
|
||||||
|
version(): Promise<string> {
|
||||||
|
return new Promise(() => {
|
||||||
|
return packageJson.version;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
initState() {
|
initState() {
|
||||||
if (this.state.services[this.name]) {
|
if (this.state.services[this.name]) {
|
||||||
this.queue = this.state.services[this.name].queue;
|
this.queue = this.state.services[this.name].queue;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "multi-downloader-nx",
|
"name": "multi-downloader-nx",
|
||||||
"short_name": "aniDL",
|
"short_name": "aniDL",
|
||||||
"version": "4.3.0b5",
|
"version": "4.3.0b6",
|
||||||
"description": "Downloader for Crunchyroll, Funimation, or Hidive via CLI or GUI",
|
"description": "Downloader for Crunchyroll, Funimation, or Hidive via CLI or GUI",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"download",
|
"download",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue