From 79efe0646cb6fc88952e33e13a8ce61205d3aad6 Mon Sep 17 00:00:00 2001
From: jared <jaredrmain@gmail.com>
Date: Tue, 2 Apr 2019 10:53:33 -0400
Subject: merge develop

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

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

diff --git a/src/components/settings/settings.vue b/src/components/settings/settings.vue
index 33dad549..6ee103c7 100644
--- a/src/components/settings/settings.vue
+++ b/src/components/settings/settings.vue
@@ -118,6 +118,12 @@
                 </label>
               </div>
             </li>
+            <li>
+              <input type="checkbox" id="minimalScopesMode" v-model="minimalScopesModeLocal">
+              <label for="minimalScopesMode">
+                {{$t('settings.minimal_scopes_mode')}} {{$t('settings.instance_default', { value: minimalScopesModeDefault })}}
+              </label>
+            </li>
           </ul>
         </div>
 
-- 
cgit v1.2.3-70-g09d2


From 7b4cb387345c0e278a6cfe5bbff5265c09281567 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Mon, 23 Sep 2019 20:29:01 +0300
Subject: split spam mode into two separate options (one in settings page)

---
 src/components/emoji_input/emoji_input.js      | 15 +++++++++------
 src/components/emoji_picker/emoji_picker.js    |  4 ++--
 src/components/emoji_picker/emoji_picker.scss  |  4 ++--
 src/components/emoji_picker/emoji_picker.vue   | 12 ++++++------
 src/components/settings/settings.js            |  4 ++++
 src/components/settings/settings.vue           |  8 ++++++++
 src/i18n/en.json                               |  3 ++-
 src/modules/config.js                          |  1 +
 test/unit/specs/components/emoji_input.spec.js | 18 +++++++++---------
 9 files changed, 43 insertions(+), 26 deletions(-)

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

diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js
index 86ff9707..5f90d7f4 100644
--- a/src/components/emoji_input/emoji_input.js
+++ b/src/components/emoji_input/emoji_input.js
@@ -89,7 +89,7 @@ const EmojiInput = {
       blurTimeout: null,
       showPicker: false,
       temporarilyHideSuggestions: false,
-      spamMode: false,
+      keepOpen: false,
       disableClickOutside: false
     }
   },
@@ -97,6 +97,9 @@ const EmojiInput = {
     EmojiPicker
   },
   computed: {
+    padEmoji () {
+      return this.$store.state.config.padEmoji
+    },
     suggestions () {
       const firstchar = this.textAtCaret.charAt(0)
       if (this.textAtCaret === firstchar) { return [] }
@@ -176,7 +179,7 @@ const EmojiInput = {
       this.$emit('input', newValue)
       this.caret = 0
     },
-    insert ({ insertion, spamMode }) {
+    insert ({ insertion, keepOpen }) {
       const before = this.value.substring(0, this.caret) || ''
       const after = this.value.substring(this.caret) || ''
 
@@ -195,8 +198,8 @@ const EmojiInput = {
        * them, masto seem to be rendering :emoji::emoji: correctly now so why not
        */
       const isSpaceRegex = /\s/
-      const spaceBefore = !isSpaceRegex.exec(before.slice(-1)) && before.length && !spamMode > 0 ? ' ' : ''
-      const spaceAfter = !isSpaceRegex.exec(after[0]) && !spamMode ? ' ' : ''
+      const spaceBefore = !isSpaceRegex.exec(before.slice(-1)) && before.length && this.padEmoji > 0 ? ' ' : ''
+      const spaceAfter = !isSpaceRegex.exec(after[0]) && this.padEmoji ? ' ' : ''
 
       const newValue = [
         before,
@@ -205,7 +208,7 @@ const EmojiInput = {
         spaceAfter,
         after
       ].join('')
-      this.spamMode = spamMode
+      this.keepOpen = keepOpen
       this.$emit('input', newValue)
       const position = this.caret + (insertion + spaceAfter + spaceBefore).length
 
@@ -283,7 +286,7 @@ const EmojiInput = {
         this.blurTimeout = null
       }
 
-      if (!this.spamMode) {
+      if (!this.keepOpen) {
         this.showPicker = false
       }
       this.focused = true
diff --git a/src/components/emoji_picker/emoji_picker.js b/src/components/emoji_picker/emoji_picker.js
index cb93f0c1..824412dd 100644
--- a/src/components/emoji_picker/emoji_picker.js
+++ b/src/components/emoji_picker/emoji_picker.js
@@ -18,7 +18,7 @@ const EmojiPicker = {
       activeGroup: 'custom',
       showingStickers: false,
       groupsScrolledClass: 'scrolled-top',
-      spamMode: false
+      keepOpen: false
     }
   },
   components: {
@@ -27,7 +27,7 @@ const EmojiPicker = {
   methods: {
     onEmoji (emoji) {
       const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement
-      this.$emit('emoji', { insertion: value, spamMode: this.spamMode })
+      this.$emit('emoji', { insertion: value, keepOpen: this.keepOpen })
     },
     highlight (key) {
       const ref = this.$refs['group-' + key]
diff --git a/src/components/emoji_picker/emoji_picker.scss b/src/components/emoji_picker/emoji_picker.scss
index 09438898..b0ed00e9 100644
--- a/src/components/emoji_picker/emoji_picker.scss
+++ b/src/components/emoji_picker/emoji_picker.scss
@@ -10,11 +10,11 @@
   margin: 0 !important;
   z-index: 1;
 
-  .spam-mode {
+  .keep-open {
     padding: 7px;
     line-height: normal;
   }
-  .spam-mode-label {
+  .keep-open-label {
     padding: 0 7px;
     display: flex;
   }
diff --git a/src/components/emoji_picker/emoji_picker.vue b/src/components/emoji_picker/emoji_picker.vue
index b32d0862..6c43dd97 100644
--- a/src/components/emoji_picker/emoji_picker.vue
+++ b/src/components/emoji_picker/emoji_picker.vue
@@ -76,16 +76,16 @@
           </div>
         </div>
         <div
-          class="spam-mode"
+          class="keep-open"
           >
           <input
-            :id="labelKey + 'spam-mode'"
-            v-model="spamMode"
+            :id="labelKey + 'keep-open'"
+            v-model="keepOpen"
             type="checkbox"
             >
-          <label class="spam-mode-label" :for="labelKey + 'spam-mode'">
-            <div class="spam-mode-label-text">
-              {{ $t('emoji.spam') }}
+          <label class="keep-open-label" :for="labelKey + 'keep-open'">
+            <div class="keep-open-label-text">
+              {{ $t('emoji.keep_open') }}
             </div>
           </label>
         </div>
diff --git a/src/components/settings/settings.js b/src/components/settings/settings.js
index c4aa45b2..b6540d7e 100644
--- a/src/components/settings/settings.js
+++ b/src/components/settings/settings.js
@@ -16,6 +16,7 @@ const settings = {
 
     return {
       hideAttachmentsLocal: user.hideAttachments,
+      padEmojiLocal: user.padEmoji,
       hideAttachmentsInConvLocal: user.hideAttachmentsInConv,
       maxThumbnails: user.maxThumbnails,
       hideNsfwLocal: user.hideNsfw,
@@ -127,6 +128,9 @@ const settings = {
     hideAttachmentsLocal (value) {
       this.$store.dispatch('setOption', { name: 'hideAttachments', value })
     },
+    padEmojiLocal (value) {
+      this.$store.dispatch('setOption', { name: 'padEmoji', value })
+    },
     hideAttachmentsInConvLocal (value) {
       this.$store.dispatch('setOption', { name: 'hideAttachmentsInConv', value })
     },
diff --git a/src/components/settings/settings.vue b/src/components/settings/settings.vue
index 744ec566..6d87a060 100644
--- a/src/components/settings/settings.vue
+++ b/src/components/settings/settings.vue
@@ -198,6 +198,14 @@
                   >
                   <label for="autohideFloatingPostButton">{{ $t('settings.autohide_floating_post_button') }}</label>
                 </li>
+                <li>
+                  <input
+                    id="padEmoji"
+                    v-model="padEmojiLocal"
+                    type="checkbox"
+                  >
+                  <label for="padEmoji">{{ $t('settings.pad_emoji') }}</label>
+                </li>
               </ul>
             </div>
 
diff --git a/src/i18n/en.json b/src/i18n/en.json
index 7676e7a8..20d4ed22 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -109,7 +109,7 @@
   "emoji": {
     "stickers": "Stickers",
     "emoji": "Emoji",
-    "spam": "Keep picker open, don't separate emoji with spaces",
+    "keep_open": "Keep picker open",
     "search_emoji": "Search for an emoji",
     "add_emoji": "Insert emoji",
     "custom": "Custom emoji",
@@ -232,6 +232,7 @@
     "delete_account_error": "There was an issue deleting your account. If this persists please contact your instance administrator.",
     "delete_account_instructions": "Type your password in the input below to confirm account deletion.",
     "avatar_size_instruction": "The recommended minimum size for avatar images is 150x150 pixels.",
+    "pad_emoji": "Pad emoji with spaces when adding from picker",
     "export_theme": "Save preset",
     "filtering": "Filtering",
     "filtering_explanation": "All statuses containing these words will be muted, one per line",
diff --git a/src/modules/config.js b/src/modules/config.js
index 2bfad8f6..cf04d14f 100644
--- a/src/modules/config.js
+++ b/src/modules/config.js
@@ -7,6 +7,7 @@ const defaultState = {
   colors: {},
   hideMutedPosts: undefined, // instance default
   collapseMessageWithSubject: undefined, // instance default
+  padEmoji: true,
   hideAttachments: false,
   hideAttachmentsInConv: false,
   maxThumbnails: 16,
diff --git a/test/unit/specs/components/emoji_input.spec.js b/test/unit/specs/components/emoji_input.spec.js
index 5f24331a..13a59961 100644
--- a/test/unit/specs/components/emoji_input.spec.js
+++ b/test/unit/specs/components/emoji_input.spec.js
@@ -26,7 +26,7 @@ describe('EmojiInput', () => {
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: initialString.length })
-      wrapper.vm.insert({ insertion: '(test)', spamMode: false })
+      wrapper.vm.insert({ insertion: '(test)', keepOpen: false })
       expect(wrapper.emitted().input[0][0]).to.eql('Testing (test) ')
     })
 
@@ -36,7 +36,7 @@ describe('EmojiInput', () => {
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: initialString.length })
-      wrapper.vm.insert({ insertion: '(test)', spamMode: false })
+      wrapper.vm.insert({ insertion: '(test)', keepOpen: false })
       expect(wrapper.emitted().input[0][0]).to.eql('Testing (test) ')
     })
 
@@ -46,7 +46,7 @@ describe('EmojiInput', () => {
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: 0 })
-      wrapper.vm.insert({ insertion: '(test)', spamMode: false })
+      wrapper.vm.insert({ insertion: '(test)', keepOpen: false })
       expect(wrapper.emitted().input[0][0]).to.eql('(test) Testing')
     })
 
@@ -56,7 +56,7 @@ describe('EmojiInput', () => {
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: 6 })
-      wrapper.vm.insert({ insertion: ':ebin:', spamMode: false })
+      wrapper.vm.insert({ insertion: ':ebin:', keepOpen: false })
       expect(wrapper.emitted().input[0][0]).to.eql('Spurdo :ebin: Sparde')
     })
 
@@ -66,7 +66,7 @@ describe('EmojiInput', () => {
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: 7 })
-      wrapper.vm.insert({ insertion: ':ebin:', spamMode: false })
+      wrapper.vm.insert({ insertion: ':ebin:', keepOpen: false })
       expect(wrapper.emitted().input[0][0]).to.eql('Spurdo :ebin: Sparde')
     })
 
@@ -76,7 +76,7 @@ describe('EmojiInput', () => {
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: initialString.length })
-      wrapper.vm.insert({ insertion: ':spam:', spamMode: true })
+      wrapper.vm.insert({ insertion: ':spam:', keepOpen: true })
       expect(wrapper.emitted().input[0][0]).to.eql('Eat some spam!:spam:')
     })
 
@@ -86,7 +86,7 @@ describe('EmojiInput', () => {
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: 0 })
-      wrapper.vm.insert({ insertion: '1234', spamMode: false })
+      wrapper.vm.insert({ insertion: '1234', keepOpen: false })
       vue.nextTick(() => {
         expect(wrapper.vm.caret).to.eql(5)
         done()
@@ -99,7 +99,7 @@ describe('EmojiInput', () => {
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: initialString.length })
-      wrapper.vm.insert({ insertion: '1234', spamMode: false })
+      wrapper.vm.insert({ insertion: '1234', keepOpen: false })
       vue.nextTick(() => {
         expect(wrapper.vm.caret).to.eql(10)
         done()
@@ -112,7 +112,7 @@ describe('EmojiInput', () => {
       const input = wrapper.find('input')
       input.setValue(initialString)
       wrapper.setData({ caret: initialString.length })
-      wrapper.vm.insert({ insertion: '1234', spamMode: true })
+      wrapper.vm.insert({ insertion: '1234', keepOpen: true })
       vue.nextTick(() => {
         expect(wrapper.vm.caret).to.eql(8)
         done()
-- 
cgit v1.2.3-70-g09d2

