summaryrefslogtreecommitdiff
path: root/src/web
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-02-25 22:56:23 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-02-25 22:56:23 +0900
commit18595dd3bbfab18a39fb8d8f38e932c0c8d8731e (patch)
tree11b3f0f7ac57e0933215cf056ac15455a6c39293 /src/web
parent:v: (diff)
downloadsharkey-18595dd3bbfab18a39fb8d8f38e932c0c8d8731e.tar.gz
sharkey-18595dd3bbfab18a39fb8d8f38e932c0c8d8731e.tar.bz2
sharkey-18595dd3bbfab18a39fb8d8f38e932c0c8d8731e.zip
#1145
Diffstat (limited to 'src/web')
-rw-r--r--src/web/app/common/views/components/messaging-room.form.vue45
1 files changed, 44 insertions, 1 deletions
diff --git a/src/web/app/common/views/components/messaging-room.form.vue b/src/web/app/common/views/components/messaging-room.form.vue
index 670040a574..9b5f1522f1 100644
--- a/src/web/app/common/views/components/messaging-room.form.vue
+++ b/src/web/app/common/views/components/messaging-room.form.vue
@@ -36,8 +36,28 @@ export default Vue.extend({
sending: false
};
},
+ computed: {
+ draftId(): string {
+ return this.user.id;
+ }
+ },
+ watch: {
+ text() {
+ this.saveDraft();
+ },
+ file() {
+ this.saveDraft();
+ }
+ },
mounted() {
autosize(this.$refs.textarea);
+
+ // 書きかけの投稿を復元
+ const draft = JSON.parse(localStorage.getItem('message_drafts') || '{}')[this.draftId];
+ if (draft) {
+ this.text = draft.data.text;
+ this.file = draft.data.file;
+ }
},
methods: {
onPaste(e) {
@@ -89,7 +109,30 @@ export default Vue.extend({
clear() {
this.text = '';
this.file = null;
- }
+ this.deleteDraft();
+ },
+
+ saveDraft() {
+ const data = JSON.parse(localStorage.getItem('message_drafts') || '{}');
+
+ data[this.draftId] = {
+ updated_at: new Date(),
+ data: {
+ text: this.text,
+ file: this.file
+ }
+ }
+
+ localStorage.setItem('message_drafts', JSON.stringify(data));
+ },
+
+ deleteDraft() {
+ const data = JSON.parse(localStorage.getItem('message_drafts') || '{}');
+
+ delete data[this.draftId];
+
+ localStorage.setItem('message_drafts', JSON.stringify(data));
+ },
}
});
</script>