summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints/i/update_widget.ts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-11-02 12:49:08 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-11-02 12:49:08 +0900
commita7e6b766be6b30b37839beb13f31d96b141cc25a (patch)
treeb6bf96ae808260f0aa94767835d59d25f7f889a7 /src/server/api/endpoints/i/update_widget.ts
parentUpdate src/server/api/endpoints/meta.ts (diff)
downloadsharkey-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.ts39
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();