Customisation of default profile tab, clean up settings (#156)
Co-authored-by: FloatingGhost <hannah@coffee-and-dreams.uk> Reviewed-on: https://akkoma.dev/AkkomaGang/pleroma-fe/pulls/156
This commit is contained in:
		
							parent
							
								
									c301daa276
								
							
						
					
					
						commit
						ae1b6ad887
					
				
					 7 changed files with 54 additions and 47 deletions
				
			
		| 
						 | 
				
			
			@ -55,8 +55,10 @@ const ExtraButtons = {
 | 
			
		|||
    hideDeleteStatusConfirmDialog () {
 | 
			
		||||
      this.showingDeleteDialog = false
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    translateStatus () {
 | 
			
		||||
      if (this.noTranslationTargetSet) {
 | 
			
		||||
        this.$store.dispatch('pushGlobalNotice', { messageKey: 'toast.no_translation_target_set', level: 'info' })
 | 
			
		||||
      }
 | 
			
		||||
      const translateTo = this.$store.getters.mergedConfig.translationLanguage || this.$store.state.instance.interfaceLanguage
 | 
			
		||||
      this.$store.dispatch('translateStatus', { id: this.status.id, language: translateTo })
 | 
			
		||||
        .then(() => this.$emit('onSuccess'))
 | 
			
		||||
| 
						 | 
				
			
			@ -120,6 +122,9 @@ const ExtraButtons = {
 | 
			
		|||
    canTranslate () {
 | 
			
		||||
      return this.$store.state.instance.translationEnabled === true
 | 
			
		||||
    },
 | 
			
		||||
    noTranslationTargetSet () {
 | 
			
		||||
      return this.$store.getters.mergedConfig.translationLanguage === undefined
 | 
			
		||||
    },
 | 
			
		||||
    statusLink () {
 | 
			
		||||
      if (this.status.is_local) {
 | 
			
		||||
        return `${this.$store.state.instance.server}${this.$router.resolve({ name: 'conversation', params: { id: this.status.id } }).href}`
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -126,6 +126,16 @@
 | 
			
		|||
            fixed-width
 | 
			
		||||
            icon="globe"
 | 
			
		||||
          /><span>{{ $t("status.translate") }}</span>
 | 
			
		||||
 | 
			
		||||
          <template v-if="noTranslationTargetSet">
 | 
			
		||||
            <span class="dropdown-item-icon__badge warning">
 | 
			
		||||
              <FAIcon
 | 
			
		||||
                fixed-width
 | 
			
		||||
                icon="exclamation-triangle"
 | 
			
		||||
                name="test"
 | 
			
		||||
              />
 | 
			
		||||
            </span>
 | 
			
		||||
          </template>
 | 
			
		||||
        </button>
 | 
			
		||||
      </div>
 | 
			
		||||
    </template>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,6 +43,11 @@ const GeneralTab = {
 | 
			
		|||
        value: mode,
 | 
			
		||||
        label: this.$t(`settings.third_column_mode_${mode}`)
 | 
			
		||||
      })),
 | 
			
		||||
      userProfileDefaultTabOptions: ['statuses', 'replies'].map(tab => ({
 | 
			
		||||
        key: tab,
 | 
			
		||||
        value: tab,
 | 
			
		||||
        label: this.$t(`user_card.${tab}`)
 | 
			
		||||
      })),
 | 
			
		||||
      loopSilentAvailable:
 | 
			
		||||
      // Firefox
 | 
			
		||||
      Object.getOwnPropertyDescriptor(HTMLVideoElement.prototype, 'mozHasAudio') ||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,11 +15,6 @@
 | 
			
		|||
            {{ $t('settings.hide_isp') }}
 | 
			
		||||
          </BooleanSetting>
 | 
			
		||||
        </li>
 | 
			
		||||
        <li>
 | 
			
		||||
          <BooleanSetting path="sidebarRight">
 | 
			
		||||
            {{ $t('settings.right_sidebar') }}
 | 
			
		||||
          </BooleanSetting>
 | 
			
		||||
        </li>
 | 
			
		||||
        <li v-if="instanceWallpaperUsed">
 | 
			
		||||
          <BooleanSetting path="hideInstanceWallpaper">
 | 
			
		||||
            {{ $t('settings.hide_wallpaper') }}
 | 
			
		||||
| 
						 | 
				
			
			@ -104,41 +99,7 @@
 | 
			
		|||
            {{ $t('settings.virtual_scrolling') }}
 | 
			
		||||
          </BooleanSetting>
 | 
			
		||||
        </li>
 | 
			
		||||
        <li>
 | 
			
		||||
          <BooleanSetting path="disableStickyHeaders">
 | 
			
		||||
            {{ $t('settings.disable_sticky_headers') }}
 | 
			
		||||
          </BooleanSetting>
 | 
			
		||||
        </li>
 | 
			
		||||
        <li>
 | 
			
		||||
          <BooleanSetting path="showScrollbars">
 | 
			
		||||
            {{ $t('settings.show_scrollbars') }}
 | 
			
		||||
          </BooleanSetting>
 | 
			
		||||
        </li>
 | 
			
		||||
        <li>
 | 
			
		||||
          <ChoiceSetting
 | 
			
		||||
            v-if="user"
 | 
			
		||||
            id="thirdColumnMode"
 | 
			
		||||
            path="thirdColumnMode"
 | 
			
		||||
            :options="thirdColumnModeOptions"
 | 
			
		||||
          >
 | 
			
		||||
            {{ $t('settings.third_column_mode') }}
 | 
			
		||||
          </ChoiceSetting>
 | 
			
		||||
        </li>
 | 
			
		||||
        <li>
 | 
			
		||||
          <BooleanSetting path="minimalScopesMode">
 | 
			
		||||
            {{ $t('settings.minimal_scopes_mode') }}
 | 
			
		||||
          </BooleanSetting>
 | 
			
		||||
        </li>
 | 
			
		||||
        <li>
 | 
			
		||||
          <BooleanSetting path="sensitiveByDefault">
 | 
			
		||||
            {{ $t('settings.sensitive_by_default') }}
 | 
			
		||||
          </BooleanSetting>
 | 
			
		||||
        </li>
 | 
			
		||||
        <li>
 | 
			
		||||
          <BooleanSetting path="sensitiveIfSubject">
 | 
			
		||||
            {{ $t('settings.sensitive_if_subject') }}
 | 
			
		||||
          </BooleanSetting>
 | 
			
		||||
        </li>
 | 
			
		||||
 | 
			
		||||
        <li>
 | 
			
		||||
          <BooleanSetting path="renderMisskeyMarkdown">
 | 
			
		||||
            {{ $t('settings.render_mfm') }}
 | 
			
		||||
| 
						 | 
				
			
			@ -156,6 +117,15 @@
 | 
			
		|||
            </li>
 | 
			
		||||
          </ul>
 | 
			
		||||
        </li>
 | 
			
		||||
        <li>
 | 
			
		||||
          <ChoiceSetting
 | 
			
		||||
            id="userProfileDefaultTab"
 | 
			
		||||
            path="userProfileDefaultTab"
 | 
			
		||||
            :options="userProfileDefaultTabOptions"
 | 
			
		||||
          >
 | 
			
		||||
            {{ $t('settings.user_profile_default_tab') }}
 | 
			
		||||
          </ChoiceSetting>
 | 
			
		||||
        </li>
 | 
			
		||||
        <li>
 | 
			
		||||
          <ChoiceSetting
 | 
			
		||||
            v-if="user && (translationLanguages.length > 0)"
 | 
			
		||||
| 
						 | 
				
			
			@ -487,12 +457,22 @@
 | 
			
		|||
            />
 | 
			
		||||
          </label>
 | 
			
		||||
        </li>
 | 
			
		||||
        <li>
 | 
			
		||||
          <BooleanSetting path="minimalScopesMode">
 | 
			
		||||
            {{ $t('settings.minimal_scopes_mode') }}
 | 
			
		||||
          </BooleanSetting>
 | 
			
		||||
        </li>
 | 
			
		||||
        <li>
 | 
			
		||||
          <!-- <BooleanSetting path="serverSide_defaultNSFW"> -->
 | 
			
		||||
          <BooleanSetting path="sensitiveByDefault">
 | 
			
		||||
            {{ $t('settings.sensitive_by_default') }}
 | 
			
		||||
          </BooleanSetting>
 | 
			
		||||
        </li>
 | 
			
		||||
        <li>
 | 
			
		||||
          <BooleanSetting path="sensitiveIfSubject">
 | 
			
		||||
            {{ $t('settings.sensitive_if_subject') }}
 | 
			
		||||
          </BooleanSetting>
 | 
			
		||||
        </li>
 | 
			
		||||
        <li>
 | 
			
		||||
          <BooleanSetting
 | 
			
		||||
            path="scopeCopy"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -33,22 +33,21 @@ const FriendList = withLoadMore({
 | 
			
		|||
  additionalPropNames: ['userId']
 | 
			
		||||
})(List)
 | 
			
		||||
 | 
			
		||||
const defaultTabKey = 'statuses'
 | 
			
		||||
 | 
			
		||||
const UserProfile = {
 | 
			
		||||
  data () {
 | 
			
		||||
    return {
 | 
			
		||||
      error: false,
 | 
			
		||||
      userId: null,
 | 
			
		||||
      tab: defaultTabKey,
 | 
			
		||||
      tab: 'statuses',
 | 
			
		||||
      footerRef: null,
 | 
			
		||||
      note: null,
 | 
			
		||||
      noteLoading: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  created () {
 | 
			
		||||
    const defaultTabKey = this.defaultTabKey
 | 
			
		||||
    const routeParams = this.$route.params
 | 
			
		||||
    const hash = get(this.$route, 'hash', defaultTabKey).replace(/^#/, '')
 | 
			
		||||
    const hash = (get(this.$route, 'hash') || defaultTabKey).replace(/^#/, '')
 | 
			
		||||
    if (hash !== '') this.tab = hash
 | 
			
		||||
    this.load(routeParams.name || routeParams.id)
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -86,6 +85,9 @@ const UserProfile = {
 | 
			
		|||
    },
 | 
			
		||||
    currentUser () {
 | 
			
		||||
      return this.$store.state.users.currentUser
 | 
			
		||||
    },
 | 
			
		||||
    defaultTabKey () {
 | 
			
		||||
      return this.$store.getters.mergedConfig.userProfileDefaultTab || 'statuses'
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
| 
						 | 
				
			
			@ -191,7 +193,7 @@ const UserProfile = {
 | 
			
		|||
    },
 | 
			
		||||
    '$route.hash': function (newVal) {
 | 
			
		||||
      const oldTab = this.tab
 | 
			
		||||
      this.tab = newVal.replace(/^#/, '') || defaultTabKey
 | 
			
		||||
      this.tab = newVal.replace(/^#/, '') || this.defaultTabKey
 | 
			
		||||
      this.onRouteChange(oldTab, this.tab)
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -806,6 +806,7 @@
 | 
			
		|||
        "use_one_click_nsfw": "Open NSFW attachments with just one click",
 | 
			
		||||
        "user_mutes": "Users",
 | 
			
		||||
        "user_profiles": "User Profiles",
 | 
			
		||||
        "user_profile_default_tab": "Default Tab on User Profile",
 | 
			
		||||
        "user_settings": "User Settings",
 | 
			
		||||
        "valid_until": "Valid until",
 | 
			
		||||
        "values": {
 | 
			
		||||
| 
						 | 
				
			
			@ -921,6 +922,9 @@
 | 
			
		|||
        "socket_reconnected": "Realtime connection established",
 | 
			
		||||
        "up_to_date": "Up-to-date"
 | 
			
		||||
    },
 | 
			
		||||
    "toast": {
 | 
			
		||||
      "no_translation_target_set": "No translation target language set - this may fail. Please set a target language in your settings."
 | 
			
		||||
    },
 | 
			
		||||
    "tool_tip": {
 | 
			
		||||
        "accept_follow_request": "Accept follow request",
 | 
			
		||||
        "add_reaction": "Add Reaction",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -116,7 +116,8 @@ export const defaultState = {
 | 
			
		|||
  conversationTreeFadeAncestors: undefined, // instance default
 | 
			
		||||
  maxDepthInThread: undefined, // instance default
 | 
			
		||||
  translationLanguage: undefined, // instance default,
 | 
			
		||||
  supportedTranslationLanguages: {} // instance default
 | 
			
		||||
  supportedTranslationLanguages: {}, // instance default
 | 
			
		||||
  userProfileDefaultTab: 'statuses'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// caching the instance default properties
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue