mirror of
https://github.com/anidl/multi-downloader-nx.git
synced 2026-03-11 17:45:30 +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 {
|
||||
name: string
|
||||
auth: (data: AuthData) => Promise<AuthResponse>;
|
||||
version: () => Promise<string>;
|
||||
checkToken: () => Promise<CheckTokenResponse>;
|
||||
search: (data: SearchData) => Promise<SearchResponse>,
|
||||
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 = {
|
||||
'auth': [AuthData, AuthResponse],
|
||||
'version': [undefined, string],
|
||||
'checkToken': [undefined, CheckTokenResponse],
|
||||
'search': [SearchData, SearchResponse],
|
||||
'default': [string, unknown],
|
||||
|
|
|
|||
|
|
@ -7,8 +7,18 @@ import { StoreState } from '../../provider/Store'
|
|||
const MenuBar: React.FC = () => {
|
||||
const [ openMenu, setMenuOpen ] = React.useState<'settings'|'help'|undefined>();
|
||||
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']) => {
|
||||
switch(service) {
|
||||
case 'crunchy':
|
||||
|
|
@ -92,6 +102,11 @@ const MenuBar: React.FC = () => {
|
|||
}}>
|
||||
Discord
|
||||
</MenuItem>
|
||||
<MenuItem onClick={() => {
|
||||
handleClose();
|
||||
}}>
|
||||
Version: {store.version}
|
||||
</MenuItem>
|
||||
</Menu>
|
||||
<Typography variant="h5" color="text.primary" component="div" align="center" sx={{flexGrow: 1}}>
|
||||
{transformService(store.service)}
|
||||
|
|
|
|||
|
|
@ -214,6 +214,7 @@ const MessageChannelProvider: FCWithChildren = ({ children }) => {
|
|||
const messageHandler: FrontEndMessages = {
|
||||
name: "default",
|
||||
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,
|
||||
search: async (data) => (await messageAndResponse(socket, { name: 'search', data })).data,
|
||||
handleDefault: async (data) => (await messageAndResponse(socket, { name: 'default', data })).data,
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ export type StoreState = {
|
|||
episodeListing: Episode[];
|
||||
downloadOptions: DownloadOptions,
|
||||
service: 'crunchy'|'funi'|'hidive'|undefined,
|
||||
version: string,
|
||||
}
|
||||
|
||||
export type StoreAction<T extends (keyof StoreState)> = {
|
||||
|
|
@ -51,6 +52,7 @@ const initialState: StoreState = {
|
|||
},
|
||||
service: undefined,
|
||||
episodeListing: [],
|
||||
version: '',
|
||||
};
|
||||
|
||||
const Store: FCWithChildren = ({children}) => {
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import CrunchyHandler from './services/crunchyroll';
|
|||
import FunimationHandler from './services/funimation';
|
||||
import HidiveHandler from './services/hidive';
|
||||
import WebSocketHandler from './websocket';
|
||||
import packageJson from '../../package.json';
|
||||
|
||||
export default class ServiceHandler {
|
||||
|
||||
|
|
@ -51,6 +52,9 @@ export default class ServiceHandler {
|
|||
return respond({ isOk: false, reason: new Error('No service selected') });
|
||||
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('checkToken', async (_, respond) => {
|
||||
if (this.service === undefined)
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import { cfg } from '..';
|
|||
import path from 'path';
|
||||
import { console } from '../../../modules/log';
|
||||
import { getState, setState } from '../../../modules/module.cfg-loader';
|
||||
import packageJson from '../../../package.json';
|
||||
|
||||
export default class Base {
|
||||
private state: GuiState;
|
||||
|
|
@ -19,6 +20,12 @@ export default class Base {
|
|||
private queue: QueueItem[] = [];
|
||||
private workOnQueue = false;
|
||||
|
||||
version(): Promise<string> {
|
||||
return new Promise(() => {
|
||||
return packageJson.version;
|
||||
});
|
||||
}
|
||||
|
||||
initState() {
|
||||
if (this.state.services[this.name]) {
|
||||
this.queue = this.state.services[this.name].queue;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "multi-downloader-nx",
|
||||
"short_name": "aniDL",
|
||||
"version": "4.3.0b5",
|
||||
"version": "4.3.0b6",
|
||||
"description": "Downloader for Crunchyroll, Funimation, or Hidive via CLI or GUI",
|
||||
"keywords": [
|
||||
"download",
|
||||
|
|
|
|||
Loading…
Reference in a new issue