From 50d64df7d8339d0faff0d52b9c6f18824c0b296d Mon Sep 17 00:00:00 2001
From: "Mr. Stallion" <mrstallion@nobody.nowhere.fauxdomain.ext>
Date: Thu, 18 Jun 2020 15:17:00 -0500
Subject: [PATCH] Minor fixes

---
 chat/ConversationView.vue               | 11 ++++++++++-
 chat/character/CharacterChannelList.vue |  1 -
 chat/interfaces.ts                      |  2 ++
 site/character_page/character_page.vue  |  2 +-
 site/character_page/kink.vue            | 22 ++++++++++++++++------
 site/character_page/kinks.vue           | 10 ++++++----
 site/character_page/match-report.vue    | 24 +++++++++++++++++-------
 site/character_page/sidebar.vue         |  8 ++++----
 8 files changed, 56 insertions(+), 24 deletions(-)

diff --git a/chat/ConversationView.vue b/chat/ConversationView.vue
index b0fb5de..c7d1bb7 100644
--- a/chat/ConversationView.vue
+++ b/chat/ConversationView.vue
@@ -245,6 +245,13 @@
         isPrivate = Conversation.isPrivate;
         showNonMatchingAds = true;
 
+
+        @Hook('beforeMount')
+        async onBeforeMount(): Promise<void> {
+          this.showNonMatchingAds = !await core.settingsStore.get('hideNonMatchingAds');
+        }
+
+
         @Hook('mounted')
         mounted(): void {
             this.extraButtons = [{
@@ -432,8 +439,10 @@
         }
 
 
-        toggleNonMatchingAds(): void {
+        async toggleNonMatchingAds(): Promise<void> {
             this.showNonMatchingAds = !this.showNonMatchingAds;
+
+            await core.settingsStore.set('hideNonMatchingAds', !this.showNonMatchingAds);
         }
 
 
diff --git a/chat/character/CharacterChannelList.vue b/chat/character/CharacterChannelList.vue
index bae3fac..a7c95b5 100644
--- a/chat/character/CharacterChannelList.vue
+++ b/chat/character/CharacterChannelList.vue
@@ -68,7 +68,6 @@ export default class CharacterChannelList extends CustomDialog {
     jumpToChannel(channel: ChannelConversation): void {
         channel.show();
     }
-
 }
 </script>
 
diff --git a/chat/interfaces.ts b/chat/interfaces.ts
index 695897a..a82e34a 100644
--- a/chat/interfaces.ts
+++ b/chat/interfaces.ts
@@ -171,6 +171,8 @@ export namespace Settings {
         hiddenUsers: string[]
         statusHistory: string[]
         searchHistory: (ExtendedSearchData | SearchData)[]
+        hideNonMatchingAds: boolean
+        hideProfileComparisonSummary: boolean
     };
 
     export interface Store {
diff --git a/site/character_page/character_page.vue b/site/character_page/character_page.vue
index 152f1b0..ed3c835 100644
--- a/site/character_page/character_page.vue
+++ b/site/character_page/character_page.vue
@@ -36,7 +36,7 @@
                         <div class="card-body">
                             <div class="tab-content">
                                 <div role="tabpanel" v-show="tab === '0'" id="overview">
-                                    <match-report :characterMatch="characterMatch" :minimized="character.is_self" v-if="shouldShowMatch()"></match-report>
+                                    <match-report :characterMatch="characterMatch" v-if="shouldShowMatch()"></match-report>
 
                                     <div style="margin-bottom:10px">
                                         <bbcode :text="character.character.description"></bbcode>
diff --git a/site/character_page/kink.vue b/site/character_page/kink.vue
index df4505c..5d5512d 100644
--- a/site/character_page/kink.vue
+++ b/site/character_page/kink.vue
@@ -20,13 +20,11 @@
 </template>
 
 <script lang="ts">
-    import {Component, Prop} from '@f-list/vue-ts';
+    import { Component, Prop, Watch } from '@f-list/vue-ts';
     import Vue from 'vue';
-    import {DisplayKink} from './interfaces';
+    import { DisplayKink } from './interfaces';
 
-    @Component({
-        name: 'kink'
-    })
+    @Component({ name: 'kink' })
     export default class KinkView extends Vue {
         @Prop({required: true})
         readonly kink!: DisplayKink;
@@ -40,8 +38,18 @@
         expandedCustom = false;
 
         listClosed = true;
+        initialListClosedState = true;
         showTooltip = false;
 
+        @Watch('expandedCustom')
+        onExpandedCustomChange(): void {
+            if (this.expandedCustom) {
+                this.initialListClosedState = this.listClosed;
+                this.listClosed = false;
+            } else {
+                this.listClosed = this.initialListClosedState;
+            }
+        }
 
         toggleExpandedCustoms(): void {
             this.expandedCustom = !this.expandedCustom;
@@ -50,7 +58,9 @@
         toggleSubkinks(): void {
             if(!this.kink.hasSubkinks)
                 return;
+
             this.listClosed = !this.listClosed;
+            this.initialListClosedState = this.listClosed;
         }
 
         get kinkClasses(): {[key: string]: boolean} {
@@ -76,4 +86,4 @@
             return this.kink.isCustom ? this.kink.id : undefined;
         }
     }
-</script>
\ No newline at end of file
+</script>
diff --git a/site/character_page/kinks.vue b/site/character_page/kinks.vue
index 10e61bd..488c821 100644
--- a/site/character_page/kinks.vue
+++ b/site/character_page/kinks.vue
@@ -147,8 +147,8 @@
             ) as CharacterKink[];
         }
 
-        async compareKinks(overridingCharacter?: Character): Promise<void> {
-            if(this.comparing) {
+        async compareKinks(overridingCharacter?: Character, forced: boolean = false): Promise<void> {
+            if ((this.comparing) && (!forced)) {
                 this.comparison = {};
                 this.comparing = false;
                 this.loading = false;
@@ -194,7 +194,7 @@
                 return;
 
             if (core.state.settings.risingAutoCompareKinks) {
-                await this.compareKinks(core.characters.ownProfile);
+                await this.compareKinks(core.characters.ownProfile, true);
             }
         }
 
@@ -203,7 +203,9 @@
             if ((this.character) && (this.character.is_self))
                 return;
 
-            await this.compareKinks(core.characters.ownProfile);
+            if (core.state.settings.risingAutoCompareKinks) {
+                await this.compareKinks(core.characters.ownProfile, true);
+            }
         }
 
         get kinkGroups(): KinkGroup[] {
diff --git a/site/character_page/match-report.vue b/site/character_page/match-report.vue
index aefcc51..06a6360 100644
--- a/site/character_page/match-report.vue
+++ b/site/character_page/match-report.vue
@@ -31,11 +31,12 @@
 </template>
 
 <script lang="ts">
-    import { Component, Prop, Watch } from '@f-list/vue-ts';
+    import { Component, Hook, Prop } from '@f-list/vue-ts';
     import * as _ from 'lodash';
     import Vue from 'vue';
     import * as Utils from '../utils';
     import { MatchReport, MatchResult, Score, Scoring } from '../../learn/matcher';
+    import core from '../../chat/core';
 
     export interface CssClassMap {
         [key: string]: boolean;
@@ -47,18 +48,25 @@
         @Prop({required: true})
         readonly characterMatch!: MatchReport;
 
-        @Prop({required: true})
-        readonly minimized = false;
+        // @Prop({required: true})
+        // readonly minimized = false;
 
         readonly avatarUrl = Utils.avatarURL;
 
         isMinimized = false;
 
-        @Watch('minimized')
-        onMinimizedChange(): void {
-            this.isMinimized = this.minimized;
+
+        @Hook('beforeMount')
+        async beforeMount(): Promise<void> {
+          this.isMinimized = !!await core.settingsStore.get('hideProfileComparisonSummary');
         }
 
+
+        // @Watch('minimized')
+        // onMinimizedChange(): void {
+        //     this.isMinimized = this.minimized;
+        // }
+
         getScoreClass(score: Score): CssClassMap {
             const classes: CssClassMap = {};
 
@@ -83,8 +91,10 @@
             return _.map(result.scores, (s: Score) => (s));
         }
 
-        toggleMinimize(): void {
+        async toggleMinimize(): Promise<void> {
             this.isMinimized = !this.isMinimized;
+
+            await core.settingsStore.set('hideProfileComparisonSummary', this.isMinimized);
         }
     }
 </script>
diff --git a/site/character_page/sidebar.vue b/site/character_page/sidebar.vue
index d01a2f3..4fed9c6 100644
--- a/site/character_page/sidebar.vue
+++ b/site/character_page/sidebar.vue
@@ -43,10 +43,10 @@
                 <infotag-item v-for="id in quickInfoIds" v-if="character.character.infotags[id]" :infotag="getInfotag(id)"
                     :data="character.character.infotags[id]" :key="id" :characterMatch="characterMatch"></infotag-item>
 
-            <div class="contact-block">
-                <contact-method v-for="method in contactMethods" :infotag="method" :key="method.id"
-                    :data="character.character.infotags[method.id]"></contact-method>
-            </div>
+<!--            <div class="contact-block">-->
+<!--                <contact-method v-for="method in contactMethods" :infotag="method" :key="method.id"-->
+<!--                    :data="character.character.infotags[method.id]"></contact-method>-->
+<!--            </div>-->
 
                 <div class="quick-info">
                     <span class="quick-info-label">Created</span>