mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
fix(flags): label Tor country flag
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { getCommentFlagFlairs, getAuthorFlagFlairs, getAuthorFlagViewModels } from '../comment-flags';
|
||||
import { getCommentFlagFlairs, getAuthorFlagFlairs, getAuthorFlagViewModels, TOR_AUTHOR_FLAG_LABEL_KEY } from '../comment-flags';
|
||||
|
||||
describe('comment-flags', () => {
|
||||
it('parses the pkc-js challenge flair example for country flags', () => {
|
||||
@@ -25,6 +25,16 @@ describe('comment-flags', () => {
|
||||
expect(flags[2]).toMatchObject({ label: 'Applejack', x: 80, y: 0 });
|
||||
});
|
||||
|
||||
it('labels the xx country flag as Tor traffic', () => {
|
||||
const [flag] = getAuthorFlagViewModels([{ text: 'flag:country:xx' }], 1000);
|
||||
|
||||
expect(flag).toMatchObject({
|
||||
key: 'country:xx',
|
||||
label: 'This user is on Tor',
|
||||
labelKey: TOR_AUTHOR_FLAG_LABEL_KEY,
|
||||
});
|
||||
});
|
||||
|
||||
it('normalizes text flag kinds before parsing', () => {
|
||||
const flags = getAuthorFlagViewModels([{ text: 'FLAG:COUNTRY:DE' }, { text: 'POL:AC' }, { text: 'flag:MLP:AJ' }], 1000);
|
||||
|
||||
|
||||
@@ -2,6 +2,9 @@ import { COUNTRY_FLAG_HEIGHT, COUNTRY_FLAG_WIDTH, getCountryFlagPosition, getCou
|
||||
import { getBoardFlagDefinition, normalizeBoardFlagKind, type BoardFlagKind } from './board-flags';
|
||||
|
||||
const COUNTRY_FLAG_SPRITE_PATH = 'assets/icons/flags-1.png';
|
||||
const TOR_COUNTRY_CODE = 'xx';
|
||||
const TOR_AUTHOR_FLAG_LABEL = 'This user is on Tor';
|
||||
export const TOR_AUTHOR_FLAG_LABEL_KEY = 'tor_author_flag_label';
|
||||
const FLAG_TEXT_PATTERN = /^flag:([a-z-]+):([a-z0-9-]+)$/i;
|
||||
const SHORT_FLAG_TEXT_PATTERN = /^(country|geo|pol|political|meme|memeflag|memeflags|pony|mlp):([a-z0-9-]+)$/i;
|
||||
const COUNTRY_EMOJI_TEXT_PATTERN = /^([a-z]{2}|catalonia|eu|fam|xe|xs|xw|xk|xx)-emoji$/i;
|
||||
@@ -46,6 +49,7 @@ export interface AuthorFlagViewModel {
|
||||
type: 'country' | BoardFlagKind;
|
||||
code: string;
|
||||
label: string;
|
||||
labelKey?: string;
|
||||
spritePath: string;
|
||||
width: number;
|
||||
height: number;
|
||||
@@ -161,7 +165,8 @@ const toCountryFlagViewModel = (codeValue: string): AuthorFlagViewModel | undefi
|
||||
key: `country:${code}`,
|
||||
type: 'country',
|
||||
code,
|
||||
label: getCountryLabel(code) ?? code.toUpperCase(),
|
||||
label: code === TOR_COUNTRY_CODE ? TOR_AUTHOR_FLAG_LABEL : (getCountryLabel(code) ?? code.toUpperCase()),
|
||||
...(code === TOR_COUNTRY_CODE ? { labelKey: TOR_AUTHOR_FLAG_LABEL_KEY } : {}),
|
||||
spritePath: COUNTRY_FLAG_SPRITE_PATH,
|
||||
width: COUNTRY_FLAG_WIDTH,
|
||||
height: COUNTRY_FLAG_HEIGHT,
|
||||
|
||||
Reference in New Issue
Block a user