diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-06-06 19:22:45 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-06-06 19:22:45 +0900 |
| commit | b0f989dbacbdbdd091b0d220496d22f47c795576 (patch) | |
| tree | c4af330d8eb11c1d0d5dc0a991409060e9287c6b /src/server/api | |
| parent | Update README.md (diff) | |
| download | sharkey-b0f989dbacbdbdd091b0d220496d22f47c795576.tar.gz sharkey-b0f989dbacbdbdd091b0d220496d22f47c795576.tar.bz2 sharkey-b0f989dbacbdbdd091b0d220496d22f47c795576.zip | |
Deckにウィジェットを置けるように
Diffstat (limited to 'src/server/api')
| -rw-r--r-- | src/server/api/endpoints.ts | 5 | ||||
| -rw-r--r-- | src/server/api/endpoints/i/update_home.ts | 51 | ||||
| -rw-r--r-- | src/server/api/endpoints/i/update_mobile_home.ts | 52 | ||||
| -rw-r--r-- | src/server/api/endpoints/i/update_widget.ts | 79 |
4 files changed, 99 insertions, 88 deletions
diff --git a/src/server/api/endpoints.ts b/src/server/api/endpoints.ts index e9392d236b..94e649d29b 100644 --- a/src/server/api/endpoints.ts +++ b/src/server/api/endpoints.ts @@ -190,6 +190,11 @@ const endpoints: Endpoint[] = [ secure: true }, { + name: 'i/update_widget', + withCredential: true, + secure: true + }, + { name: 'i/change_password', withCredential: true, secure: true diff --git a/src/server/api/endpoints/i/update_home.ts b/src/server/api/endpoints/i/update_home.ts index 8ce551957e..48f6dbbb7a 100644 --- a/src/server/api/endpoints/i/update_home.ts +++ b/src/server/api/endpoints/i/update_home.ts @@ -1,6 +1,3 @@ -/** - * Module dependencies - */ import $ from 'cafy'; import User from '../../../../models/user'; import event from '../../../../publishers/stream'; @@ -13,50 +10,16 @@ module.exports = async (params, user) => new Promise(async (res, rej) => { .have('id', $.str) .have('place', $.str) .have('data', $.obj)) - .optional() .get(params.home); if (homeErr) return rej('invalid home param'); - // Get 'id' parameter - const [id, idErr] = $.str.optional().get(params.id); - if (idErr) return rej('invalid id param'); + await User.update(user._id, { + $set: { + 'clientSettings.home': home + } + }); - // Get 'data' parameter - const [data, dataErr] = $.obj.optional().get(params.data); - if (dataErr) return rej('invalid data param'); + res(); - if (home) { - await User.update(user._id, { - $set: { - 'clientSettings.home': home - } - }); - - res(); - - event(user._id, 'home_updated', { - home - }); - } else { - if (id == null && data == null) return rej('you need to set id and data params if home param unset'); - - const _home = user.clientSettings.home; - const widget = _home.find(w => w.id == id); - - if (widget == null) return rej('widget not found'); - - widget.data = data; - - await User.update(user._id, { - $set: { - 'clientSettings.home': _home - } - }); - - res(); - - event(user._id, 'home_updated', { - id, data - }); - } + event(user._id, 'home_updated', home); }); diff --git a/src/server/api/endpoints/i/update_mobile_home.ts b/src/server/api/endpoints/i/update_mobile_home.ts index d79a77072b..d285a0a72d 100644 --- a/src/server/api/endpoints/i/update_mobile_home.ts +++ b/src/server/api/endpoints/i/update_mobile_home.ts @@ -1,6 +1,3 @@ -/** - * Module dependencies - */ import $ from 'cafy'; import User from '../../../../models/user'; import event from '../../../../publishers/stream'; @@ -12,49 +9,16 @@ module.exports = async (params, user) => new Promise(async (res, rej) => { .have('name', $.str) .have('id', $.str) .have('data', $.obj)) - .optional().get(params.home); + .get(params.home); if (homeErr) return rej('invalid home param'); - // Get 'id' parameter - const [id, idErr] = $.str.optional().get(params.id); - if (idErr) return rej('invalid id param'); + await User.update(user._id, { + $set: { + 'clientSettings.mobileHome': home + } + }); - // Get 'data' parameter - const [data, dataErr] = $.obj.optional().get(params.data); - if (dataErr) return rej('invalid data param'); + res(); - if (home) { - await User.update(user._id, { - $set: { - 'clientSettings.mobileHome': home - } - }); - - res(); - - event(user._id, 'mobile_home_updated', { - home - }); - } else { - if (id == null && data == null) return rej('you need to set id and data params if home param unset'); - - const _home = user.clientSettings.mobileHome || []; - const widget = _home.find(w => w.id == id); - - if (widget == null) return rej('widget not found'); - - widget.data = data; - - await User.update(user._id, { - $set: { - 'clientSettings.mobileHome': _home - } - }); - - res(); - - event(user._id, 'mobile_home_updated', { - id, data - }); - } + event(user._id, 'mobile_home_updated', home); }); diff --git a/src/server/api/endpoints/i/update_widget.ts b/src/server/api/endpoints/i/update_widget.ts new file mode 100644 index 0000000000..b37761bde1 --- /dev/null +++ b/src/server/api/endpoints/i/update_widget.ts @@ -0,0 +1,79 @@ +import $ from 'cafy'; +import User from '../../../../models/user'; +import event from '../../../../publishers/stream'; + +module.exports = async (params, user) => 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'); + + if (id == null && 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 => w.id == id); + if (widget) { + widget.data = data; + + await User.update(user._id, { + $set: { + 'clientSettings.home': desktopHome + } + }); + } + } + //#endregion + + //#region Mobile home + if (widget == null && user.clientSettings.mobileHome) { + const mobileHome = user.clientSettings.mobileHome; + widget = mobileHome.find(w => w.id == id); + if (widget) { + widget.data = data; + + await User.update(user._id, { + $set: { + 'clientSettings.mobileHome': mobileHome + } + }); + } + } + //#endregion + + //#region Deck + if (widget == null && user.clientSettings.deck && user.clientSettings.deck.columns) { + const deck = user.clientSettings.deck; + deck.columns.filter(c => c.type == 'widgets').forEach(c => { + c.widgets.forEach(w => { + if (w.id == id) widget = w; + }); + }); + if (widget) { + widget.data = data; + + await User.update(user._id, { + $set: { + 'clientSettings.deck': deck + } + }); + } + } + //#endregion + + if (widget) { + event(user._id, 'widgetUpdated', { + id, data + }); + + res(); + } else { + rej('widget not found'); + } +}); |