1
Fork 0

Compare commits

...

2 Commits

3 changed files with 34 additions and 17 deletions

View File

@ -1,5 +1,5 @@
import {Component} from "preact"; import {Component} from "preact";
import {fromStorage, Feature} from "../../storage/exports.js"; import {fromStorage, Feature, ReplacementType} from "../../storage/exports.js";
import {Setting, type SettingProps} from "./index.js"; import {Setting, type SettingProps} from "./index.js";
type State = { type State = {
@ -39,6 +39,13 @@ export class AnonymizeUsernamesSetting extends Component<SettingProps, State> {
} }
const replacementType = data.value.replacementType; const replacementType = data.value.replacementType;
const replacementTypeOptions = Object.values(ReplacementType).map((key) => (
<option selected={key === replacementType} value={key}>
{key
.replace(/-/g, " ")
.replace(/(\b[a-z])/gi, (character) => character.toUpperCase())}
</option>
));
return ( return (
<Setting {...this.props}> <Setting {...this.props}>
@ -52,15 +59,7 @@ export class AnonymizeUsernamesSetting extends Component<SettingProps, State> {
<ul class="checkbox-list"> <ul class="checkbox-list">
<li> <li>
<select onChange={this.replacementTypeChanged}> <select onChange={this.replacementTypeChanged}>
<option {replacementTypeOptions}
selected={replacementType === "numerical"}
value="numerical"
>
Numerical
</option>
<option selected={replacementType === "hashed"} value="hashed">
Hashed
</option>
</select> </select>
</li> </li>
</ul> </ul>

View File

@ -0,0 +1,23 @@
/**
* The different types of username replacements for the Anonymize Usernames
* feature.
*/
export enum ReplacementType {
Hashed = "hashed",
Numerical = "numerical",
}
/**
* Type guard check to see if a string is a valid {@link ReplacementType}.
* @param input The string to check.
*/
export function isReplacementType(input: string): input is ReplacementType {
return Object.values(ReplacementType).includes(input as ReplacementType);
}
/**
* The data stored for the Anonymize Usernames feature.
*/
export type AnonymizeUsernamesData = {
replacementType: ReplacementType;
};

View File

@ -1,23 +1,18 @@
import {createValue, type Value} from "@holllo/webextension-storage"; import {createValue, type Value} from "@holllo/webextension-storage";
import browser from "webextension-polyfill"; import browser from "webextension-polyfill";
import {type AnonymizeUsernamesData} from "./anonymize-usernames.js";
import {Data, Feature, MiscellaneousFeature} from "./enums.js"; import {Data, Feature, MiscellaneousFeature} from "./enums.js";
import {collectHideTopicsData} from "./hide-topics.js"; import {collectHideTopicsData} from "./hide-topics.js";
import {defaultKnownGroups} from "./known-groups.js"; import {defaultKnownGroups} from "./known-groups.js";
import {collectUsernameColors} from "./username-color.js"; import {collectUsernameColors} from "./username-color.js";
import {collectUserLabels} from "./user-label.js"; import {collectUserLabels} from "./user-label.js";
export * from "./anonymize-usernames.js";
export * from "./enums.js"; export * from "./enums.js";
export * from "./hide-topics.js"; export * from "./hide-topics.js";
export * from "./username-color.js"; export * from "./username-color.js";
export * from "./user-label.js"; export * from "./user-label.js";
/**
* The data stored for the Anonymize Usernames feature.
*/
export type AnonymizeUsernamesData = {
replacementType: "numerical" | "hashed";
};
/** /**
* The data stored for the Hide Votes feature. * The data stored for the Hide Votes feature.
*/ */