From 89a677f5e822456f0e8ec510ed6193a8e1783297 Mon Sep 17 00:00:00 2001 From: Shpuld Shpuldson Date: Wed, 15 Jul 2020 16:19:57 +0300 Subject: add basic idempotency support --- src/services/api/api.service.js | 10 ++++++++-- src/services/status_poster/status_poster.service.js | 11 +++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) (limited to 'src/services') diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js index 40ea5bd9..da519001 100644 --- a/src/services/api/api.service.js +++ b/src/services/api/api.service.js @@ -631,7 +631,8 @@ const postStatus = ({ mediaIds = [], inReplyToStatusId, contentType, - preview + preview, + idempotencyKey }) => { const form = new FormData() const pollOptions = poll.options || [] @@ -665,10 +666,15 @@ const postStatus = ({ form.append('preview', 'true') } + let postHeaders = authHeaders(credentials) + if (idempotencyKey) { + postHeaders['idempotency-key'] = idempotencyKey + } + return fetch(MASTODON_POST_STATUS_URL, { body: form, method: 'POST', - headers: authHeaders(credentials) + headers: postHeaders }) .then((response) => { return response.json() diff --git a/src/services/status_poster/status_poster.service.js b/src/services/status_poster/status_poster.service.js index ac469175..812f74d5 100644 --- a/src/services/status_poster/status_poster.service.js +++ b/src/services/status_poster/status_poster.service.js @@ -11,7 +11,8 @@ const postStatus = ({ media = [], inReplyToStatusId = undefined, contentType = 'text/plain', - preview = false + preview = false, + idempotencyKey = '' }) => { const mediaIds = map(media, 'id') @@ -25,9 +26,14 @@ const postStatus = ({ inReplyToStatusId, contentType, poll, - preview + preview, + idempotencyKey }) .then((data) => { + return { + error: 'test' + } + /* if (!data.error && !preview) { store.dispatch('addNewStatuses', { statuses: [data], @@ -37,6 +43,7 @@ const postStatus = ({ }) } return data + */ }) .catch((err) => { return { -- cgit v1.2.3-70-g09d2 From 0c7c24d3d1e4580d6ce03f71b9381aa3f6b689cb Mon Sep 17 00:00:00 2001 From: Shpuld Shpuldson Date: Thu, 16 Jul 2020 10:18:18 +0300 Subject: make idempotency watch entire status --- src/components/post_status_form/post_status_form.js | 16 +++++++++------- src/services/status_poster/status_poster.service.js | 5 ----- 2 files changed, 9 insertions(+), 12 deletions(-) (limited to 'src/services') diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js index 29841261..c70c2232 100644 --- a/src/components/post_status_form/post_status_form.js +++ b/src/components/post_status_form/post_status_form.js @@ -208,14 +208,18 @@ const PostStatusForm = { }) }, watch: { - 'newStatus.contentType': function () { - this.autoPreview() - }, - 'newStatus.spoilerText': function () { - this.autoPreview() + 'newStatus': { + deep: true, + handler () { + this.statusChanged() + } } }, methods: { + statusChanged () { + this.autoPreview() + this.updateIdempotencyKey() + }, clearStatus () { const newStatus = this.newStatus this.newStatus = { @@ -239,7 +243,6 @@ const PostStatusForm = { el.style.height = 'auto' el.style.height = undefined this.error = null - this.updateIdempotencyKey() if (this.preview) this.previewStatus() }, async postStatus (event, newStatus, opts = {}) { @@ -407,7 +410,6 @@ const PostStatusForm = { } }, onEmojiInputInput (e) { - this.autoPreview() this.$nextTick(() => { this.resize(this.$refs['textarea']) }) diff --git a/src/services/status_poster/status_poster.service.js b/src/services/status_poster/status_poster.service.js index 812f74d5..f09196aa 100644 --- a/src/services/status_poster/status_poster.service.js +++ b/src/services/status_poster/status_poster.service.js @@ -30,10 +30,6 @@ const postStatus = ({ idempotencyKey }) .then((data) => { - return { - error: 'test' - } - /* if (!data.error && !preview) { store.dispatch('addNewStatuses', { statuses: [data], @@ -43,7 +39,6 @@ const postStatus = ({ }) } return data - */ }) .catch((err) => { return { -- cgit v1.2.3-70-g09d2