diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-11-02 12:49:08 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-11-02 12:49:08 +0900 |
| commit | a7e6b766be6b30b37839beb13f31d96b141cc25a (patch) | |
| tree | b6bf96ae808260f0aa94767835d59d25f7f889a7 /src/server/api/endpoints/i/update_widget.ts | |
| parent | Update src/server/api/endpoints/meta.ts (diff) | |
| download | sharkey-a7e6b766be6b30b37839beb13f31d96b141cc25a.tar.gz sharkey-a7e6b766be6b30b37839beb13f31d96b141cc25a.tar.bz2 sharkey-a7e6b766be6b30b37839beb13f31d96b141cc25a.zip | |
Resolve #2623
Diffstat (limited to 'src/server/api/endpoints/i/update_widget.ts')
| -rw-r--r-- | src/server/api/endpoints/i/update_widget.ts | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/src/server/api/endpoints/i/update_widget.ts b/src/server/api/endpoints/i/update_widget.ts index 92499493eb..947a29074c 100644 --- a/src/server/api/endpoints/i/update_widget.ts +++ b/src/server/api/endpoints/i/update_widget.ts @@ -1,31 +1,38 @@ import $ from 'cafy'; import User, { ILocalUser } from '../../../../models/user'; import { publishMainStream } from '../../../../stream'; +import getParams from '../../get-params'; export const meta = { requireCredential: true, - secure: true + + secure: true, + + params: { + id: { + validator: $.str + }, + + data: { + validator: $.obj() + } + } }; export default async (params: any, user: ILocalUser) => new Promise(async (res, rej) => { - // Get 'id' parameter - const [id, idErr] = $.str.get(params.id); - if (idErr) return rej('invalid id param'); - - // Get 'data' parameter - const [data, dataErr] = $.obj().get(params.data); - if (dataErr) return rej('invalid data param'); + const [ps, psErr] = getParams(meta, params); + if (psErr) return rej(psErr); - if (id == null && data == null) return rej('you need to set id and data params if home param unset'); + if (ps.id == null && ps.data == null) return rej('you need to set id and data params if home param unset'); let widget; //#region Desktop home if (widget == null && user.clientSettings.home) { const desktopHome = user.clientSettings.home; - widget = desktopHome.find((w: any) => w.id == id); + widget = desktopHome.find((w: any) => w.id == ps.id); if (widget) { - widget.data = data; + widget.data = ps.data; await User.update(user._id, { $set: { @@ -39,9 +46,9 @@ export default async (params: any, user: ILocalUser) => new Promise(async (res, //#region Mobile home if (widget == null && user.clientSettings.mobileHome) { const mobileHome = user.clientSettings.mobileHome; - widget = mobileHome.find((w: any) => w.id == id); + widget = mobileHome.find((w: any) => w.id == ps.id); if (widget) { - widget.data = data; + widget.data = ps.data; await User.update(user._id, { $set: { @@ -57,11 +64,11 @@ export default async (params: any, user: ILocalUser) => new Promise(async (res, const deck = user.clientSettings.deck; deck.columns.filter((c: any) => c.type == 'widgets').forEach((c: any) => { c.widgets.forEach((w: any) => { - if (w.id == id) widget = w; + if (w.id == ps.id) widget = w; }); }); if (widget) { - widget.data = data; + widget.data = ps.data; await User.update(user._id, { $set: { @@ -74,7 +81,7 @@ export default async (params: any, user: ILocalUser) => new Promise(async (res, if (widget) { publishMainStream(user._id, 'widgetUpdated', { - id, data + id: ps.id, data: ps.data }); res(); |