Compare commits
2 Commits
dc499be4b7
...
36bf5ece75
Author | SHA1 | Date |
---|---|---|
Bauke | 36bf5ece75 | |
Bauke | b908749d7c |
|
@ -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>
|
||||||
|
|
|
@ -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;
|
||||||
|
};
|
|
@ -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.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue