take CW length in status char count, fix #122

This commit is contained in:
Nicolas Constant 2019-06-23 18:45:11 -04:00
parent 6c9653f945
commit 8ad9ecb95b
No known key found for this signature in database
GPG Key ID: 1E9F677FB01A5688
1 changed files with 28 additions and 13 deletions

View File

@ -20,7 +20,14 @@ import { identifierModuleUrl } from '@angular/compiler';
styleUrls: ['./create-status.component.scss'] styleUrls: ['./create-status.component.scss']
}) })
export class CreateStatusComponent implements OnInit, OnDestroy { export class CreateStatusComponent implements OnInit, OnDestroy {
title: string; private _title: string;
set title(value: string){
this._title = value;
this.countStatusChar(this.status);
}
get title(): string {
return this._title;
}
private _status: string = ''; private _status: string = '';
set status(value: string) { set status(value: string) {
@ -108,19 +115,19 @@ export class CreateStatusComponent implements OnInit, OnDestroy {
const selectedAccount = accounts.filter(x => x.isSelected)[0]; const selectedAccount = accounts.filter(x => x.isSelected)[0];
const settings = this.toolsService.getAccountSettings(selectedAccount); const settings = this.toolsService.getAccountSettings(selectedAccount);
if(settings.customStatusCharLengthEnabled){ if (settings.customStatusCharLengthEnabled) {
this.maxCharLength = settings.customStatusCharLength; this.maxCharLength = settings.customStatusCharLength;
this.countStatusChar(this.status); this.countStatusChar(this.status);
} else { } else {
this.instancesInfoService.getMaxStatusChars(selectedAccount.instance) this.instancesInfoService.getMaxStatusChars(selectedAccount.instance)
.then((maxChars: number) => { .then((maxChars: number) => {
this.maxCharLength = maxChars; this.maxCharLength = maxChars;
this.countStatusChar(this.status); this.countStatusChar(this.status);
}) })
.catch((err: HttpErrorResponse) => { .catch((err: HttpErrorResponse) => {
this.notificationService.notifyHttpError(err); this.notificationService.notifyHttpError(err);
}); });
} }
if (!this.statusReplyingToWrapper) { if (!this.statusReplyingToWrapper) {
this.instancesInfoService.getDefaultPrivacy(selectedAccount) this.instancesInfoService.getDefaultPrivacy(selectedAccount)
@ -176,10 +183,18 @@ export class CreateStatusComponent implements OnInit, OnDestroy {
const statusExtraChars = this.getMentionExtraChars(status); const statusExtraChars = this.getMentionExtraChars(status);
const statusLength = currentStatus.length - statusExtraChars; const statusLength = currentStatus.length - statusExtraChars;
this.charCountLeft = this.maxCharLength - statusLength; this.charCountLeft = this.maxCharLength - statusLength - this.getCwLength();
this.postCounts = parseStatus.length; this.postCounts = parseStatus.length;
} }
private getCwLength(): number {
let cwLength = 0;
if (this.title) {
cwLength = this.title.length;
}
return cwLength;
}
private getMentions(status: Status, providerInfo: AccountInfo): string[] { private getMentions(status: Status, providerInfo: AccountInfo): string[] {
const mentions = [...status.mentions.map(x => x.acct), status.account.acct]; const mentions = [...status.mentions.map(x => x.acct), status.account.acct];
@ -244,7 +259,7 @@ export class CreateStatusComponent implements OnInit, OnDestroy {
.then((status: Status) => { .then((status: Status) => {
return this.sendStatus(acc, this.status, visibility, this.title, status, mediaAttachments); return this.sendStatus(acc, this.status, visibility, this.title, status, mediaAttachments);
}) })
.then((res: Status) => { .then((res: Status) => {
this.title = ''; this.title = '';
this.status = ''; this.status = '';
this.onClose.emit(); this.onClose.emit();
@ -305,7 +320,7 @@ export class CreateStatusComponent implements OnInit, OnDestroy {
aggregateMention += `${x} `; aggregateMention += `${x} `;
}); });
const currentMaxCharLength = this.maxCharLength + mentionExtraChars; const currentMaxCharLength = this.maxCharLength + mentionExtraChars - this.getCwLength();
const maxChars = currentMaxCharLength - 6; const maxChars = currentMaxCharLength - 6;
while (trucatedStatus.length > currentMaxCharLength) { while (trucatedStatus.length > currentMaxCharLength) {