changing lang working

This commit is contained in:
Nicolas Constant 2023-08-04 02:39:59 -04:00
parent 0d7821cd01
commit 91b2f4a0f0
No known key found for this signature in database
GPG Key ID: 1E9F677FB01A5688
3 changed files with 59 additions and 4 deletions

View File

@ -7,8 +7,8 @@
<img class="status-editor__emoji--image" src="/assets/emoji/72x72/1f636.png">
</a>
<a class="status-editor__lang" title="Change language" href *ngIf="configuredLanguages && configuredLanguages.length > 1">
EN
<a class="status-editor__lang" title="Change language" href *ngIf="configuredLanguages && configuredLanguages.length > 1" (click)="onLangContextMenu($event)">
{{ selectedLanguage.iso639 }}
</a>
<textarea #reply [(ngModel)]="status" name="status" class="form-control form-control-sm status-editor__content" (paste)="onPaste($event)"
@ -87,5 +87,12 @@
<fa-icon [icon]="faEnvelope" class="context-menu-icon"></fa-icon> Direct
</ng-template>
</context-menu>
<context-menu #langContextMenu>
<ng-template contextMenuItem (execute)="setLanguage(l)" *ngFor="let l of configuredLanguages">
{{ l.name }}
</ng-template>
</context-menu>
<app-media></app-media>
</form>

View File

@ -164,6 +164,7 @@ export class CreateStatusComponent implements OnInit, OnDestroy {
@ViewChild('fileInput') fileInputElement: ElementRef;
@ViewChild('footer') footerElement: ElementRef;
@ViewChild(ContextMenuComponent) public contextMenu: ContextMenuComponent;
@ViewChild('langContextMenu') public langContextMenu: ContextMenuComponent;
@ViewChild(PollEditorComponent) pollEditor: PollEditorComponent;
@ViewChild(StatusSchedulerComponent) statusScheduler: StatusSchedulerComponent;
@ -199,6 +200,7 @@ export class CreateStatusComponent implements OnInit, OnDestroy {
private accounts$: Observable<AccountInfo[]>;
private accountSub: Subscription;
private langSub: Subscription;
private selectLangSub: Subscription;
private selectedAccount: AccountInfo;
constructor(
@ -223,12 +225,34 @@ export class CreateStatusComponent implements OnInit, OnDestroy {
configuredLanguages: ILanguage[] = [];
selectedLanguage: ILanguage;
ngOnInit() {
private initLanguages(){
this.configuredLanguages = this.languageService.getConfiguredLanguages();
this.selectedLanguage = this.languageService.getSelectedLanguage();
this.langSub = this.languageService.configuredLanguagesChanged.subscribe(l => {
this.configuredLanguages = l;
// if(this.configuredLanguages.length > 0
// && this.selectedLanguage
// && this.configuredLanguages.findIndex(x => x.iso639 === this.selectedLanguage.iso639)){
// this.languageService.setSelectedLanguage(this.configuredLanguages[0]);
// }
});
this.selectLangSub = this.languageService.selectedLanguageChanged.subscribe(l => {
this.selectedLanguage = l;
});
if(!this.selectedLanguage && this.configuredLanguages.length > 0){
this.languageService.setSelectedLanguage(this.configuredLanguages[0]);
}
}
setLanguage(lang: ILanguage): boolean {
if(lang){
this.languageService.setSelectedLanguage(lang);
}
return false;
}
ngOnInit() {
this.initLanguages();
if (!this.isRedrafting) {
this.status = this.statusStateService.getStatusContent(this.statusReplyingToWrapper);
@ -277,6 +301,7 @@ export class CreateStatusComponent implements OnInit, OnDestroy {
this.accountSub.unsubscribe();
this.langSub.unsubscribe();
this.selectLangSub.unsubscribe();
}
onPaste(e: any) {
@ -901,6 +926,17 @@ export class CreateStatusComponent implements OnInit, OnDestroy {
$event.stopPropagation();
}
public onLangContextMenu($event: MouseEvent): void {
this.contextMenuService.show.next({
// Optional - if unspecified, all context menu components will open
contextMenu: this.langContextMenu,
event: $event,
item: null
});
$event.preventDefault();
$event.stopPropagation();
}
//https://stackblitz.com/edit/overlay-demo
@ViewChild('emojiButton') emojiButtonElement: ElementRef;
overlayRef: OverlayRef;

View File

@ -37,8 +37,12 @@ export class LanguageService {
var settings = this.settingsService.getSettings();
settings.configuredLanguages.push(lang);
this.settingsService.saveSettings(settings);
this.configuredLanguagesChanged.next(settings.configuredLanguages);
if(settings.configuredLanguages.length === 1){
this.setSelectedLanguage(lang);
}
}
removeLanguage(lang: ILanguage){
@ -47,6 +51,14 @@ export class LanguageService {
this.settingsService.saveSettings(settings);
this.configuredLanguagesChanged.next(settings.configuredLanguages);
if(this.getSelectedLanguage().iso639 === lang.iso639){
if(settings.configuredLanguages.length > 0){
this.setSelectedLanguage(settings.configuredLanguages[0]);
} else {
this.setSelectedLanguage(null);
}
}
}
searchLanguage(input: string): ILanguage[] {