From e4940fca3420d9eba5a64982ad9ddfdd7b85fbb5 Mon Sep 17 00:00:00 2001 From: hexxa Date: Mon, 28 Mar 2022 15:58:57 +0800 Subject: [PATCH] feat(fe/api): expose quickshare api in the frontend dev mode --- src/client/web/src/components/api.ts | 42 +++++++++++++++++++ .../web/src/components/state_updater.ts | 18 +++++++- src/client/web/webpack.app.dev.js | 11 ++--- 3 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 src/client/web/src/components/api.ts diff --git a/src/client/web/src/components/api.ts b/src/client/web/src/components/api.ts new file mode 100644 index 0000000..6b6faa7 --- /dev/null +++ b/src/client/web/src/components/api.ts @@ -0,0 +1,42 @@ +import { ICoreState } from "./core_state"; +import { updater, Updater } from "./state_updater"; +import { UploadEntry } from "../worker/interface"; + +export class QuickshareAPI { + private updater: Updater; + constructor() { + this.updater = updater(); + } + initAll = async (params: URLSearchParams): Promise => { + return this.updater.initAll(params); + } + + addUploadArray = (fileArray: Array): string => { + return this.updater.addUploadArray(fileArray); + }; + + deleteUpload = async (filePath: string): Promise => { + return await this.updater.deleteUpload(filePath); + }; + + listUploadArray = async (): Promise> => { + return await this.updater.listUploadArray(); + }; + + stopUploading = (filePath: string): string => { + return this.updater.stopUploading(filePath); + } + + self = async (): Promise => { + return await this.updater.self(); + }; + + getProps = (): ICoreState => { + return this.updater.props; + }; +} + +const api = new QuickshareAPI(); +export const API = (): QuickshareAPI => { + return api; +}; diff --git a/src/client/web/src/components/state_updater.ts b/src/client/web/src/components/state_updater.ts index 1f7514e..be0109a 100644 --- a/src/client/web/src/components/state_updater.ts +++ b/src/client/web/src/components/state_updater.ts @@ -65,6 +65,20 @@ export class Updater { return ""; }; + listUploadArray = async (): Promise> => { + const uploadsArray = new Array(); + this.props.uploadingsInfo.uploadings.forEach((entry: UploadEntry) => { + uploadsArray.push(entry); + }); + + return uploadsArray; + }; + + addUploadArray = (fileArray: Array): string => { + const fileList = List(fileArray); + return this.addUploads(fileList); + }; + addUploads = (fileList: List): string => { fileList.forEach((file) => { const filePath = getItemPath( @@ -340,7 +354,9 @@ export class Updater { } if (fails.size > 0) { - Env().alertMsg(`${this.props.msg.pkg.get("move.fail")}: ${fails.join(",\n")}`); + Env().alertMsg( + `${this.props.msg.pkg.get("move.fail")}: ${fails.join(",\n")}` + ); return errServer; } diff --git a/src/client/web/webpack.app.dev.js b/src/client/web/webpack.app.dev.js index 278c6ef..bbae7f1 100644 --- a/src/client/web/webpack.app.dev.js +++ b/src/client/web/webpack.app.dev.js @@ -4,19 +4,20 @@ const HtmlWebpackPlugin = require("html-webpack-plugin"); const dev = require("./webpack.dev.js"); module.exports = merge(dev, { - entry: "./src/app.tsx", + entry: ["./src/app.tsx", "./src/components/api.ts"], context: `${__dirname}`, output: { globalObject: "this", path: `${__dirname}/../../../public/static`, chunkFilename: "[name].bundle.js", - filename: "[name].bundle.js" + filename: "[name].bundle.js", + library: "Q", }, plugins: [ new HtmlWebpackPlugin({ template: `${__dirname}/build/template/index.template.dev.html`, hash: true, - filename: `../index.html` - }) - ] + filename: `../index.html`, + }), + ], });