From 455cd0d0289c7633aca22ad6e8737d449e361fce Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Tue, 25 Sep 2018 14:47:02 +0300
Subject: settings for scope/subject

---
 src/components/settings/settings.vue | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

(limited to 'src/components/settings/settings.vue')

diff --git a/src/components/settings/settings.vue b/src/components/settings/settings.vue
index 42c660a3..f9e7d711 100644
--- a/src/components/settings/settings.vue
+++ b/src/components/settings/settings.vue
@@ -53,6 +53,41 @@
             </li>
           </ul>
         </div>
+
+        <div class="setting-item">
+          <h2>{{$t('settings.composing')}}</h2>
+          <ul class="setting-list">
+            <li>
+              <input type="checkbox" id="scopeCopy" v-model="scopeCopyLocal">
+              <label for="scopeCopy">
+                {{$t('settings.scope_copy')}} {{$t('settings.instance_default', { value: scopeCopyDefault })}}
+              </label>
+            </li>
+            <li>
+              <div>
+                {{$t('settings.subject_line_behavior')}}
+                <label for="subjectLineBehavior" class="select">
+                  <select id="subjectLineBehavior" v-model="subjectLineBehaviorLocal">
+                    <option value="email">
+                      {{$t('settings.subject_line_email')}}
+                      {{subjectLineBehaviorLocal == 'email' ? $t('settings.instance_default_simple') : ''}}
+                    </option>
+                    <option value="masto">
+                      {{$t('settings.subject_line_mastodon')}}
+                      {{subjectLineBehaviorLocal == 'mastodon' ? $t('settings.instance_default_simple') : ''}}
+                    </option>
+                    <option value="noop">
+                      {{$t('settings.subject_line_noop')}}
+                      {{subjectLineBehaviorLocal == 'noop' ? $t('settings.instance_default_simple') : ''}}
+                    </option>
+                  </select>
+                  <i class="icon-down-open"/>
+                </label>
+              </div>
+            </li>
+          </ul>
+        </div>
+
         <div class="setting-item">
           <h2>{{$t('settings.attachments')}}</h2>
           <ul class="setting-list">
-- 
cgit v1.2.3-70-g09d2


From ef968d8e1e4f3194a0856fd93bc03d8030112b12 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Tue, 25 Sep 2018 15:16:26 +0300
Subject: now it actually works

---
 src/components/post_status_form/post_status_form.js | 10 ++++++++--
 src/components/settings/settings.vue                |  6 +++---
 src/components/status/status.js                     | 10 ++++++++--
 src/components/status/status.vue                    |  2 +-
 src/modules/instance.js                             |  2 +-
 5 files changed, 21 insertions(+), 9 deletions(-)

(limited to 'src/components/settings/settings.vue')

diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index a84e764c..804c4bc2 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -24,7 +24,7 @@ const PostStatusForm = {
     'replyTo',
     'repliedUser',
     'attentions',
-    'messageScope',
+    'copyMessageScope',
     'subject'
   ],
   components: {
@@ -46,6 +46,12 @@ const PostStatusForm = {
       statusText = buildMentionsString({ user: this.repliedUser, attentions: this.attentions }, currentUser)
     }
 
+    console.log(this.copyMessageScope)
+    const scope = (this.copyMessageScope && this.$store.state.config.copyScope || this.copyMessageScope === 'direct')
+          ? this.copyMessageScope
+          : this.$store.state.users.currentUser.default_scope
+
+    console.log(this)
     return {
       dropFiles: [],
       submitDisabled: false,
@@ -58,7 +64,7 @@ const PostStatusForm = {
         contentType: 'text/plain',
         nsfw: false,
         files: [],
-        visibility: this.messageScope || this.$store.state.users.currentUser.default_scope
+        visibility: scope
       },
       caret: 0
     }
diff --git a/src/components/settings/settings.vue b/src/components/settings/settings.vue
index f9e7d711..5a5b2fb4 100644
--- a/src/components/settings/settings.vue
+++ b/src/components/settings/settings.vue
@@ -70,15 +70,15 @@
                   <select id="subjectLineBehavior" v-model="subjectLineBehaviorLocal">
                     <option value="email">
                       {{$t('settings.subject_line_email')}}
-                      {{subjectLineBehaviorLocal == 'email' ? $t('settings.instance_default_simple') : ''}}
+                      {{subjectLineBehaviorDefault == 'email' ? $t('settings.instance_default_simple') : ''}}
                     </option>
                     <option value="masto">
                       {{$t('settings.subject_line_mastodon')}}
-                      {{subjectLineBehaviorLocal == 'mastodon' ? $t('settings.instance_default_simple') : ''}}
+                      {{subjectLineBehaviorDefault == 'mastodon' ? $t('settings.instance_default_simple') : ''}}
                     </option>
                     <option value="noop">
                       {{$t('settings.subject_line_noop')}}
-                      {{subjectLineBehaviorLocal == 'noop' ? $t('settings.instance_default_simple') : ''}}
+                      {{subjectLineBehaviorDefault == 'noop' ? $t('settings.instance_default_simple') : ''}}
                     </option>
                   </select>
                   <i class="icon-down-open"/>
diff --git a/src/components/status/status.js b/src/components/status/status.js
index 45f5ccac..38cfc5ae 100644
--- a/src/components/status/status.js
+++ b/src/components/status/status.js
@@ -174,10 +174,16 @@ const Status = {
       return true
     },
     replySubject () {
-      if (this.status.summary && !this.status.summary.match(/^re[: ]/i)) {
+      if (!this.status.summary) return '';
+      const behavior = this.$store.state.config.subjectLineBehavior
+      const startsWithRe = this.status.summary.match(/^re[: ]/i)
+      if (behavior !== 'noop' && startsWithRe || behavior === 'masto') {
+        return this.status.summary
+      } else if (behavior === 'email') {
         return 're: '.concat(this.status.summary)
+      } else if (behavior === 'noop') {
+        return ''
       }
-      return this.status.summary
     },
     attachmentSize () {
       if ((this.$store.state.config.hideAttachments && !this.inConversation) ||
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index eb521280..8087d392 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -106,7 +106,7 @@
       </div>
       <div class="container" v-if="replying">
         <div class="reply-left"/>
-        <post-status-form class="reply-body" :reply-to="status.id" :attentions="status.attentions" :repliedUser="status.user" :message-scope="status.visibility" :subject="replySubject" v-on:posted="toggleReplying"/>
+        <post-status-form class="reply-body" :reply-to="status.id" :attentions="status.attentions" :repliedUser="status.user" :copy-message-scope="status.visibility" :subject="replySubject" v-on:posted="toggleReplying"/>
       </div>
     </template>
   </div>
diff --git a/src/modules/instance.js b/src/modules/instance.js
index 0e67e4d1..58913060 100644
--- a/src/modules/instance.js
+++ b/src/modules/instance.js
@@ -19,7 +19,7 @@ const defaultState = {
   formattingOptionsEnabled: false,
   collapseMessageWithSubject: false,
   disableChat: false,
-  scopeCopy: false,
+  scopeCopy: true,
   subjectLineBehavior: 'email',
 
   // Nasty stuff
-- 
cgit v1.2.3-70-g09d2

