Reorg and minor fixes to search history
This commit is contained in:
		
							parent
							
								
									01b92e2415
								
							
						
					
					
						commit
						859151750c
					
				@ -229,7 +229,23 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        updateSearch(data?: SearchData): void {
 | 
					        updateSearch(data?: SearchData): void {
 | 
				
			||||||
          if (data) {
 | 
					          if (data) {
 | 
				
			||||||
            this.data = data;
 | 
					            // this.data = {kinks: [], genders: [], orientations: [], languages: [], furryprefs: [], roles: [], positions: []};
 | 
				
			||||||
 | 
					            // this.data = data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            this.data = _.mapValues(
 | 
				
			||||||
 | 
					                data,
 | 
				
			||||||
 | 
					                (category, categoryName) => (
 | 
				
			||||||
 | 
					                  _.map(
 | 
				
			||||||
 | 
					                    category,
 | 
				
			||||||
 | 
					                    (selection) => {
 | 
				
			||||||
 | 
					                        const jsonSelection = JSON.stringify(selection);
 | 
				
			||||||
 | 
					                        const v = _.find((this.options as any)[categoryName], (op) => (JSON.stringify(op) === jsonSelection));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        return v || selection;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                  )
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					            ) as SearchData;
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -184,7 +184,7 @@
 | 
				
			|||||||
    import {BBCodeView} from '../bbcode/view';
 | 
					    import {BBCodeView} from '../bbcode/view';
 | 
				
			||||||
    import {isShowing as anyDialogsShown} from '../components/Modal.vue';
 | 
					    import {isShowing as anyDialogsShown} from '../components/Modal.vue';
 | 
				
			||||||
    import {Keys} from '../keys';
 | 
					    import {Keys} from '../keys';
 | 
				
			||||||
    import AdView from './ads/AdView.vue';
 | 
					    import CharacterAdView from './character/CharacterAdView.vue';
 | 
				
			||||||
    import {Editor} from './bbcode';
 | 
					    import {Editor} from './bbcode';
 | 
				
			||||||
    import CommandHelp from './CommandHelp.vue';
 | 
					    import CommandHelp from './CommandHelp.vue';
 | 
				
			||||||
    import { characterImage, getByteLength, getKey } from './common';
 | 
					    import { characterImage, getByteLength, getKey } from './common';
 | 
				
			||||||
@ -199,7 +199,7 @@
 | 
				
			|||||||
    import ReportDialog from './ReportDialog.vue';
 | 
					    import ReportDialog from './ReportDialog.vue';
 | 
				
			||||||
    import {isCommand} from './slash_commands';
 | 
					    import {isCommand} from './slash_commands';
 | 
				
			||||||
    import UserView from './UserView.vue';
 | 
					    import UserView from './UserView.vue';
 | 
				
			||||||
    import UserChannelList from './UserChannelList.vue';
 | 
					    import CharacterChannelList from './character/CharacterChannelList.vue';
 | 
				
			||||||
    import * as _ from 'lodash';
 | 
					    import * as _ from 'lodash';
 | 
				
			||||||
    import Dropdown from '../components/Dropdown.vue';
 | 
					    import Dropdown from '../components/Dropdown.vue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -208,7 +208,7 @@
 | 
				
			|||||||
        components: {
 | 
					        components: {
 | 
				
			||||||
            user: UserView, 'bbcode-editor': Editor, 'manage-channel': ManageChannel, settings: ConversationSettings,
 | 
					            user: UserView, 'bbcode-editor': Editor, 'manage-channel': ManageChannel, settings: ConversationSettings,
 | 
				
			||||||
            logs: Logs, 'message-view': MessageView, bbcode: BBCodeView(core.bbCodeParser), 'command-help': CommandHelp,
 | 
					            logs: Logs, 'message-view': MessageView, bbcode: BBCodeView(core.bbCodeParser), 'command-help': CommandHelp,
 | 
				
			||||||
            'ad-view': AdView, 'channel-list': UserChannelList, dropdown: Dropdown, adSettings: ConversationAdSettings
 | 
					            'ad-view': CharacterAdView, 'channel-list': CharacterChannelList, dropdown: Dropdown, adSettings: ConversationAdSettings
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    export default class ConversationView extends Vue {
 | 
					    export default class ConversationView extends Vue {
 | 
				
			||||||
@ -481,11 +481,11 @@
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        showAds(): void {
 | 
					        showAds(): void {
 | 
				
			||||||
            (<AdView>this.$refs['adViewer']).show();
 | 
					            (<CharacterAdView>this.$refs['adViewer']).show();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        showChannels(): void {
 | 
					        showChannels(): void {
 | 
				
			||||||
            (<UserChannelList>this.$refs['channelList']).show();
 | 
					            (<CharacterChannelList>this.$refs['channelList']).show();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -48,7 +48,7 @@
 | 
				
			|||||||
    import Vue from 'vue';
 | 
					    import Vue from 'vue';
 | 
				
			||||||
    import {BBCodeView} from '../bbcode/view';
 | 
					    import {BBCodeView} from '../bbcode/view';
 | 
				
			||||||
    import Modal from '../components/Modal.vue';
 | 
					    import Modal from '../components/Modal.vue';
 | 
				
			||||||
    import AdView from './ads/AdView.vue';
 | 
					    import CharacterAdView from './character/CharacterAdView.vue';
 | 
				
			||||||
    import {characterImage, errorToString, getByteLength, profileLink} from './common';
 | 
					    import {characterImage, errorToString, getByteLength, profileLink} from './common';
 | 
				
			||||||
    import core from './core';
 | 
					    import core from './core';
 | 
				
			||||||
    import {Channel, Character} from './interfaces';
 | 
					    import {Channel, Character} from './interfaces';
 | 
				
			||||||
@ -56,7 +56,7 @@
 | 
				
			|||||||
    import ReportDialog from './ReportDialog.vue';
 | 
					    import ReportDialog from './ReportDialog.vue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Component({
 | 
					    @Component({
 | 
				
			||||||
        components: {bbcode: BBCodeView(core.bbCodeParser), modal: Modal, 'ad-view': AdView}
 | 
					        components: {bbcode: BBCodeView(core.bbCodeParser), modal: Modal, 'ad-view': CharacterAdView}
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    export default class UserMenu extends Vue {
 | 
					    export default class UserMenu extends Vue {
 | 
				
			||||||
        @Prop({required: true})
 | 
					        @Prop({required: true})
 | 
				
			||||||
@ -131,7 +131,7 @@
 | 
				
			|||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            (<AdView>this.$refs['adViewDialog']).show();
 | 
					            (<CharacterAdView>this.$refs['adViewDialog']).show();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -14,7 +14,7 @@
 | 
				
			|||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <div class="row ad-viewer" ref="pageBody" v-else>
 | 
					        <div class="row ad-viewer" ref="pageBody" v-else>
 | 
				
			||||||
            <i>Character has not posted any ads.</i>
 | 
					            <i><user :character="character">{{character.name}}</user> has not posted any ads on the channels you are on.</i>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   </modal>
 | 
					   </modal>
 | 
				
			||||||
@ -37,7 +37,7 @@ import { BBCodeView } from '../../bbcode/view';
 | 
				
			|||||||
@Component({
 | 
					@Component({
 | 
				
			||||||
    components: {modal: Modal, user: UserView, bbcode: BBCodeView(core.bbCodeParser)}
 | 
					    components: {modal: Modal, user: UserView, bbcode: BBCodeView(core.bbCodeParser)}
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
export default class AdView extends CustomDialog {
 | 
					export default class CharacterAdView extends CustomDialog {
 | 
				
			||||||
    @Prop({required: true})
 | 
					    @Prop({required: true})
 | 
				
			||||||
    readonly character!: Character;
 | 
					    readonly character!: Character;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -4,12 +4,16 @@
 | 
				
			|||||||
            Channels for <user :character="character">{{character.name}}</user>
 | 
					            Channels for <user :character="character">{{character.name}}</user>
 | 
				
			||||||
        </template>
 | 
					        </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
       <div class="user-channel-list" ref="pageBody">
 | 
					       <div class="user-channel-list" ref="pageBody" v-if="channels.length > 0">
 | 
				
			||||||
            <template v-for="channel in channels">
 | 
					            <template v-for="channel in channels">
 | 
				
			||||||
                <h3><a href="#" @click.prevent="jumpToChannel(channel)">#{{channel.name}}</a></h3>
 | 
					                <h3><a href="#" @click.prevent="jumpToChannel(channel)">#{{channel.name}}</a></h3>
 | 
				
			||||||
            </template>
 | 
					            </template>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <div class="user-channel-list" ref="pageBody" v-else>
 | 
				
			||||||
 | 
					            <i><user :character="character">{{character.name}}</user> is not on any of the channels you are on.</i>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   </modal>
 | 
					   </modal>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -18,18 +22,18 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import * as _ from 'lodash';
 | 
					import * as _ from 'lodash';
 | 
				
			||||||
import { Component, Hook, Prop, Watch } from '@f-list/vue-ts';
 | 
					import { Component, Hook, Prop, Watch } from '@f-list/vue-ts';
 | 
				
			||||||
import CustomDialog from '../components/custom_dialog';
 | 
					import CustomDialog from '../../components/custom_dialog';
 | 
				
			||||||
import Modal from '../components/Modal.vue';
 | 
					import Modal from '../../components/Modal.vue';
 | 
				
			||||||
import { Character } from '../fchat/interfaces';
 | 
					import { Character } from '../../fchat/interfaces';
 | 
				
			||||||
import core from './core';
 | 
					import core from '../core';
 | 
				
			||||||
import { Conversation } from './interfaces';
 | 
					import { Conversation } from '../interfaces';
 | 
				
			||||||
import UserView from './UserView.vue';
 | 
					import UserView from '../UserView.vue';
 | 
				
			||||||
import ChannelConversation = Conversation.ChannelConversation;
 | 
					import ChannelConversation = Conversation.ChannelConversation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Component({
 | 
					@Component({
 | 
				
			||||||
    components: {modal: Modal, user: UserView}
 | 
					    components: {modal: Modal, user: UserView}
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
export default class UserChannelList extends CustomDialog {
 | 
					export default class CharacterChannelList extends CustomDialog {
 | 
				
			||||||
    @Prop({required: true})
 | 
					    @Prop({required: true})
 | 
				
			||||||
    readonly character!: Character;
 | 
					    readonly character!: Character;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -401,6 +401,7 @@
 | 
				
			|||||||
                    this.interval = null;
 | 
					                    this.interval = null;
 | 
				
			||||||
                    this.visible = true;
 | 
					                    this.visible = true;
 | 
				
			||||||
                    this.visibleSince = Date.now();
 | 
					                    this.visibleSince = Date.now();
 | 
				
			||||||
 | 
					                    this.shouldDismiss = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    this.initialCursorPosition = screen.getCursorScreenPoint();
 | 
					                    this.initialCursorPosition = screen.getCursorScreenPoint();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -72,3 +72,7 @@ https://www.youtube.com/watch?v=fk6JtDhA7WI (audio on, video doesn't show, audio
 | 
				
			|||||||
Slow
 | 
					Slow
 | 
				
			||||||
https://giphy.com/gifs/arianagrande-ariana-grande-thank-u-next-you-uldtLAK6tSOKP5PWw3
 | 
					https://giphy.com/gifs/arianagrande-ariana-grande-thank-u-next-you-uldtLAK6tSOKP5PWw3
 | 
				
			||||||
http://gfycatporn.com/deepthroat.php
 | 
					http://gfycatporn.com/deepthroat.php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Derpibooru
 | 
				
			||||||
 | 
					Pornhub GIFS
 | 
				
			||||||
 | 
				
			|||||||
@ -2,7 +2,26 @@ import * as _ from 'lodash';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function getSafeLanguages(langs: string | string[] | undefined): string[] {
 | 
					export function getSafeLanguages(langs: string | string[] | undefined): string[] {
 | 
				
			||||||
    return langs ? _.castArray(langs) : [];
 | 
					    const initialLanguages = _.isString(langs)
 | 
				
			||||||
 | 
					        ? ([langs.replace('_', '-')])
 | 
				
			||||||
 | 
					        : (langs || []);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const initialCount = initialLanguages.length;
 | 
				
			||||||
 | 
					    const safeLanguages = _.filter(initialLanguages, (il) => (_.indexOf(supportedLanguages, il) >= 0));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ((initialCount > 0) && (safeLanguages.length)) {
 | 
				
			||||||
 | 
					        safeLanguages.push('en-GB');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return safeLanguages;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					let supportedLanguages: string[] = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function updateSupportedLanguages(langs: string[]): void {
 | 
				
			||||||
 | 
					    supportedLanguages = langs;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -30,7 +49,6 @@ export const knownLanguageNames = {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    et: 'Estonian',
 | 
					    et: 'Estonian',
 | 
				
			||||||
    fa: 'Persian',
 | 
					    fa: 'Persian',
 | 
				
			||||||
    fi: 'Finnish',
 | 
					 | 
				
			||||||
    fo: 'Faroese',
 | 
					    fo: 'Faroese',
 | 
				
			||||||
    fr: 'French',
 | 
					    fr: 'French',
 | 
				
			||||||
    he: 'Hebrew',
 | 
					    he: 'Hebrew',
 | 
				
			||||||
 | 
				
			|||||||
@ -41,7 +41,7 @@ import * as path from 'path';
 | 
				
			|||||||
// import * as url from 'url';
 | 
					// import * as url from 'url';
 | 
				
			||||||
import l from '../chat/localize';
 | 
					import l from '../chat/localize';
 | 
				
			||||||
import {defaultHost, GeneralSettings} from './common';
 | 
					import {defaultHost, GeneralSettings} from './common';
 | 
				
			||||||
import { getSafeLanguages, knownLanguageNames } from './language';
 | 
					import { getSafeLanguages, knownLanguageNames, updateSupportedLanguages } from './language';
 | 
				
			||||||
import * as windowState from './window_state';
 | 
					import * as windowState from './window_state';
 | 
				
			||||||
import BrowserWindow = Electron.BrowserWindow;
 | 
					import BrowserWindow = Electron.BrowserWindow;
 | 
				
			||||||
import MenuItem = Electron.MenuItem;
 | 
					import MenuItem = Electron.MenuItem;
 | 
				
			||||||
@ -271,6 +271,8 @@ function onReady(): void {
 | 
				
			|||||||
    log.transports.file.file = path.join(baseDir, 'log.txt');
 | 
					    log.transports.file.file = path.join(baseDir, 'log.txt');
 | 
				
			||||||
    log.info('Starting application.');
 | 
					    log.info('Starting application.');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    updateSupportedLanguages(electron.session.defaultSession.availableSpellCheckerLanguages);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    app.setAppUserModelId('com.squirrel.fchat.F-Chat');
 | 
					    app.setAppUserModelId('com.squirrel.fchat.F-Chat');
 | 
				
			||||||
    app.on('open-file', createWindow);
 | 
					    app.on('open-file', createWindow);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -52,10 +52,10 @@ This repository contains a heavily customized version of the mainline F-Chat 3.0
 | 
				
			|||||||
    *    Conversation dialog can be opened by typing in a character name
 | 
					    *    Conversation dialog can be opened by typing in a character name
 | 
				
			||||||
    *    Message search matches character names
 | 
					    *    Message search matches character names
 | 
				
			||||||
    *    PM list shows characters' online status as a colored icon
 | 
					    *    PM list shows characters' online status as a colored icon
 | 
				
			||||||
*   Details for Nerds
 | 
					*   Technical Details for Nerds
 | 
				
			||||||
    *    Upgraded to Electron 8.x
 | 
					    *    Upgraded to Electron 8.x
 | 
				
			||||||
    *    Replaced node-spellchecker with the built-in spellchecker of Electron 8
 | 
					    *    Replaced `node-spellchecker` with the built-in spellchecker that ships with Electron 8
 | 
				
			||||||
    *    Multi-language support for spell checking (Windows only – language support is fully automatic on MacOS) 
 | 
					    *    Multi-language support for spell checking (Windows only – language is autodetected on MacOS) 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## How to Set Up Ads
 | 
					## How to Set Up Ads
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user