summaryrefslogtreecommitdiff
path: root/src/api/endpoints
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2017-11-21 07:20:13 +0900
committerGitHub <noreply@github.com>2017-11-21 07:20:13 +0900
commit1e52060c5f06b153b9495cca84af97e7788018bb (patch)
treeaee38ce45c74b58905128dd1674e98c7cf6f266f /src/api/endpoints
parentMerge branch 'master' of https://github.com/syuilo/misskey (diff)
parentFix bug (diff)
downloadmisskey-1e52060c5f06b153b9495cca84af97e7788018bb.tar.gz
misskey-1e52060c5f06b153b9495cca84af97e7788018bb.tar.bz2
misskey-1e52060c5f06b153b9495cca84af97e7788018bb.zip
Merge pull request #933 from syuilo/sw
ServiceWorker support
Diffstat (limited to 'src/api/endpoints')
-rw-r--r--src/api/endpoints/messaging/messages/create.ts4
-rw-r--r--src/api/endpoints/posts/create.ts7
-rw-r--r--src/api/endpoints/sw/register.ts50
3 files changed, 56 insertions, 5 deletions
diff --git a/src/api/endpoints/messaging/messages/create.ts b/src/api/endpoints/messaging/messages/create.ts
index 29a4671f84..3c7689f967 100644
--- a/src/api/endpoints/messaging/messages/create.ts
+++ b/src/api/endpoints/messaging/messages/create.ts
@@ -9,8 +9,7 @@ import User from '../../../models/user';
import DriveFile from '../../../models/drive-file';
import serialize from '../../../serializers/messaging-message';
import publishUserStream from '../../../event';
-import { publishMessagingStream } from '../../../event';
-import { publishMessagingIndexStream } from '../../../event';
+import { publishMessagingStream, publishMessagingIndexStream, pushSw } from '../../../event';
import config from '../../../../conf';
/**
@@ -99,6 +98,7 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
const freshMessage = await Message.findOne({ _id: message._id }, { is_read: true });
if (!freshMessage.is_read) {
publishUserStream(message.recipient_id, 'unread_messaging_message', messageObj);
+ pushSw(message.recipient_id, 'unread_messaging_message', messageObj);
}
}, 3000);
diff --git a/src/api/endpoints/posts/create.ts b/src/api/endpoints/posts/create.ts
index 4f4b7e2e83..ae4959dae4 100644
--- a/src/api/endpoints/posts/create.ts
+++ b/src/api/endpoints/posts/create.ts
@@ -14,7 +14,7 @@ import ChannelWatching from '../../models/channel-watching';
import serialize from '../../serializers/post';
import notify from '../../common/notify';
import watch from '../../common/watch-post';
-import { default as event, publishChannelStream } from '../../event';
+import event, { pushSw, publishChannelStream } from '../../event';
import config from '../../../conf';
/**
@@ -234,7 +234,7 @@ module.exports = (params, user: IUser, app) => new Promise(async (res, rej) => {
const mentions = [];
- function addMention(mentionee, type) {
+ function addMention(mentionee, reason) {
// Reject if already added
if (mentions.some(x => x.equals(mentionee))) return;
@@ -243,7 +243,8 @@ module.exports = (params, user: IUser, app) => new Promise(async (res, rej) => {
// Publish event
if (!user._id.equals(mentionee)) {
- event(mentionee, type, postObj);
+ event(mentionee, reason, postObj);
+ pushSw(mentionee, reason, postObj);
}
}
diff --git a/src/api/endpoints/sw/register.ts b/src/api/endpoints/sw/register.ts
new file mode 100644
index 0000000000..99406138db
--- /dev/null
+++ b/src/api/endpoints/sw/register.ts
@@ -0,0 +1,50 @@
+/**
+ * Module dependencies
+ */
+import $ from 'cafy';
+import Subscription from '../../models/sw-subscription';
+
+/**
+ * subscribe service worker
+ *
+ * @param {any} params
+ * @param {any} user
+ * @param {any} _
+ * @param {boolean} isSecure
+ * @return {Promise<any>}
+ */
+module.exports = async (params, user, _, isSecure) => new Promise(async (res, rej) => {
+ // Get 'endpoint' parameter
+ const [endpoint, endpointErr] = $(params.endpoint).string().$;
+ if (endpointErr) return rej('invalid endpoint param');
+
+ // Get 'auth' parameter
+ const [auth, authErr] = $(params.auth).string().$;
+ if (authErr) return rej('invalid auth param');
+
+ // Get 'publickey' parameter
+ const [publickey, publickeyErr] = $(params.publickey).string().$;
+ if (publickeyErr) return rej('invalid publickey param');
+
+ // if already subscribed
+ const exist = await Subscription.findOne({
+ user_id: user._id,
+ endpoint: endpoint,
+ auth: auth,
+ publickey: publickey,
+ deleted_at: { $exists: false }
+ });
+
+ if (exist !== null) {
+ return res();
+ }
+
+ await Subscription.insert({
+ user_id: user._id,
+ endpoint: endpoint,
+ auth: auth,
+ publickey: publickey
+ });
+
+ res();
+});