This commit is contained in:
Peter Clement 2022-08-30 10:50:25 +01:00
parent accdfd9b9e
commit 700614f3e6
5 changed files with 44 additions and 46 deletions

View File

@ -8,4 +8,4 @@ export { oidc } from "./oidc"
export { templates } from "./templates"
export { licensing } from "./licensing"
export { groups } from "./groups"
export { plugins } from "./plugins"
export { plugins } from "./plugins"

View File

@ -2,46 +2,42 @@ import { writable } from "svelte/store"
import { API } from "api"
export function createPluginsStore() {
const { subscribe, set, update } = writable([])
const { subscribe, set, update } = writable([])
async function load() {
const plugins = await API.getPlugins()
set(plugins)
}
async function load() {
const plugins = await API.getPlugins()
set(plugins)
}
async function deletePlugin(pluginId, pluginRev) {
await API.deletePlugin(pluginId, pluginRev)
update(state => {
state = state.filter(
existing => existing._id !== pluginId
)
return state
})
async function deletePlugin(pluginId, pluginRev) {
await API.deletePlugin(pluginId, pluginRev)
update(state => {
state = state.filter(existing => existing._id !== pluginId)
return state
})
}
}
async function uploadPlugin(file, source) {
let data = new FormData()
data.append("file", file)
let resp = await API.uploadPlugin(data, source)
let newPlugin = resp.plugins[0]
update(state => {
const currentIdx = state.findIndex(plugin => plugin._id === newPlugin._id)
if (currentIdx >= 0) {
state.splice(currentIdx, 1, newPlugin)
} else {
state.push(newPlugin)
}
return state
})
}
return {
subscribe,
load,
deletePlugin,
uploadPlugin
}
async function uploadPlugin(file, source) {
let data = new FormData()
data.append("file", file)
let resp = await API.uploadPlugin(data, source)
let newPlugin = resp.plugins[0]
update(state => {
const currentIdx = state.findIndex(plugin => plugin._id === newPlugin._id)
if (currentIdx >= 0) {
state.splice(currentIdx, 1, newPlugin)
} else {
state.push(newPlugin)
}
return state
})
}
return {
subscribe,
load,
deletePlugin,
uploadPlugin,
}
}
export const plugins = createPluginsStore()

View File

@ -21,15 +21,14 @@ export const buildPluginEndpoints = API => ({
},
/**
* Deletes a plugin.
* @param pluginId the ID of the plugin to delete
*
* * @param pluginId the revision of the plugin to delete
*/
* Deletes a plugin.
* @param pluginId the ID of the plugin to delete
*
* * @param pluginId the revision of the plugin to delete
*/
deletePlugin: async (pluginId, pluginRev) => {
return await API.delete({
url: `/api/plugin/${pluginId}/${pluginRev}`,
})
},
})

View File

@ -52,7 +52,6 @@ export async function destroy(ctx: any) {
await db.remove(ctx.params.pluginId, ctx.params.pluginRev)
ctx.message = `Plugin ${ctx.params.pluginId} deleted.`
ctx.status = 200
}
export async function processPlugin(plugin: FileType, source?: string) {

View File

@ -8,6 +8,10 @@ const router = new Router()
router
.post("/api/plugin/upload/:source", authorized(BUILDER), controller.upload)
.get("/api/plugin", authorized(BUILDER), controller.fetch)
.delete("/api/plugin/:pluginId/:pluginRev", authorized(BUILDER), controller.destroy)
.delete(
"/api/plugin/:pluginId/:pluginRev",
authorized(BUILDER),
controller.destroy
)
export default router