fix links count
This commit is contained in:
parent
bd970f2196
commit
535ad08438
|
@ -72,12 +72,34 @@ describe('CreateStatusComponent', () => {
|
||||||
expect((<any>component).charCountLeft).toBe(466);
|
expect((<any>component).charCountLeft).toBe(466);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should not count https link more than the minimum', () => {
|
||||||
|
const status = "https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/";
|
||||||
|
(<any>component).maxCharLength = 500;
|
||||||
|
(<any>component).countStatusChar(status);
|
||||||
|
expect((<any>component).charCountLeft).toBe(477);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not count http link more than the minimum', () => {
|
||||||
|
const status = "http://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/";
|
||||||
|
(<any>component).maxCharLength = 500;
|
||||||
|
(<any>component).countStatusChar(status);
|
||||||
|
expect((<any>component).charCountLeft).toBe(477);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it('should not count links more than the minimum', () => {
|
||||||
|
const status = "http://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/ http://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/ http://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/";
|
||||||
|
(<any>component).maxCharLength = 500;
|
||||||
|
(<any>component).countStatusChar(status);
|
||||||
|
expect((<any>component).charCountLeft).toBe(429);
|
||||||
|
});
|
||||||
|
|
||||||
it('should count correctly complex status', () => {
|
it('should count correctly complex status', () => {
|
||||||
const status = 'dsqdqs @NicolasConstant@mastodon.partipirate.org dsqdqs👇😱 😶 status #Pleroma with 😱 😶 emojis 😏 👍 #Mastodon @ddqsdqs @dsqdsq@dqsdsqqdsq';
|
const status = 'dsqdqs @NicolasConstant@mastodon.partipirate.org dsqdqs👇😱 😶 status https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/ #Pleroma with 😱 😶 emojis 😏 👍 #Mastodon @ddqsdqs @dsqdsq@dqsdsqqdsq';
|
||||||
(<any>component).title = '🙂 test';
|
(<any>component).title = '🙂 test';
|
||||||
(<any>component).maxCharLength = 500;
|
(<any>component).maxCharLength = 500;
|
||||||
(<any>component).countStatusChar(status);
|
(<any>component).countStatusChar(status);
|
||||||
expect((<any>component).charCountLeft).toBe(397);
|
expect((<any>component).charCountLeft).toBe(373);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not parse small status', () => {
|
it('should not parse small status', () => {
|
||||||
|
|
|
@ -355,8 +355,9 @@ export class CreateStatusComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
const currentStatus = parseStatus[parseStatus.length - 1];
|
const currentStatus = parseStatus[parseStatus.length - 1];
|
||||||
const statusExtraChars = this.getMentionExtraChars(status);
|
const statusExtraChars = this.getMentionExtraChars(status);
|
||||||
|
const linksExtraChars = this.getLinksExtraChars(status);
|
||||||
|
|
||||||
const statusLength = [...currentStatus].length - statusExtraChars;
|
const statusLength = [...currentStatus].length - statusExtraChars - linksExtraChars;
|
||||||
this.charCountLeft = this.maxCharLength - statusLength - this.getCwLength();
|
this.charCountLeft = this.maxCharLength - statusLength - this.getCwLength();
|
||||||
this.postCounts = parseStatus.length;
|
this.postCounts = parseStatus.length;
|
||||||
}
|
}
|
||||||
|
@ -506,6 +507,18 @@ export class CreateStatusComponent implements OnInit, OnDestroy {
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private getLinksExtraChars(status: string): number {
|
||||||
|
let mentionExtraChars = 0;
|
||||||
|
let links = status.split(' ').filter(x => x.startsWith('http://') || x.startsWith('https://'));
|
||||||
|
for (let link of links) {
|
||||||
|
if(link.length > 23){
|
||||||
|
mentionExtraChars += link.length - 23;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return mentionExtraChars;
|
||||||
|
}
|
||||||
|
|
||||||
private getMentionExtraChars(status: string): number {
|
private getMentionExtraChars(status: string): number {
|
||||||
let mentionExtraChars = 0;
|
let mentionExtraChars = 0;
|
||||||
let mentions = this.getMentionsFromStatus(status);
|
let mentions = this.getMentionsFromStatus(status);
|
||||||
|
|
Loading…
Reference in New Issue