Default to system emoji font (#11925)
* Disable Twemoji emoji font by default Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Force Twemoji font in SAS Verification Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Iterate Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Iterate Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Add tests Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Improve tests Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --------- Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
parent
a6705304aa
commit
ee485ffcfd
13 changed files with 119 additions and 114 deletions
|
@ -17,22 +17,26 @@ limitations under the License.
|
|||
import { Action } from "../../../src/dispatcher/actions";
|
||||
import dis from "../../../src/dispatcher/dispatcher";
|
||||
import SystemFontController from "../../../src/settings/controllers/SystemFontController";
|
||||
import { SettingLevel } from "../../../src/settings/SettingLevel";
|
||||
import SettingsStore from "../../../src/settings/SettingsStore";
|
||||
|
||||
const dispatchSpy = jest.spyOn(dis, "dispatch");
|
||||
|
||||
describe("SystemFontController", () => {
|
||||
it("dispatches a font size action on change", () => {
|
||||
const getValueSpy = jest.spyOn(SettingsStore, "getValue").mockReturnValue(true);
|
||||
it("dispatches a system font update action on change", () => {
|
||||
const controller = new SystemFontController();
|
||||
|
||||
controller.onChange(SettingLevel.ACCOUNT, "$room:server", 12);
|
||||
const getValueSpy = jest.spyOn(SettingsStore, "getValue").mockImplementation((settingName) => {
|
||||
if (settingName === "useBundledEmojiFont") return false;
|
||||
if (settingName === "useSystemFont") return true;
|
||||
if (settingName === "systemFont") return "Comic Sans MS";
|
||||
});
|
||||
controller.onChange();
|
||||
|
||||
expect(dispatchSpy).toHaveBeenCalledWith({
|
||||
action: Action.UpdateSystemFont,
|
||||
useBundledEmojiFont: false,
|
||||
useSystemFont: true,
|
||||
font: 12,
|
||||
font: "Comic Sans MS",
|
||||
});
|
||||
|
||||
expect(getValueSpy).toHaveBeenCalledWith("useSystemFont");
|
||||
|
|
|
@ -1,40 +0,0 @@
|
|||
/*
|
||||
Copyright 2022 The Matrix.org Foundation C.I.C.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
import { Action } from "../../../src/dispatcher/actions";
|
||||
import dis from "../../../src/dispatcher/dispatcher";
|
||||
import UseSystemFontController from "../../../src/settings/controllers/UseSystemFontController";
|
||||
import { SettingLevel } from "../../../src/settings/SettingLevel";
|
||||
import SettingsStore from "../../../src/settings/SettingsStore";
|
||||
|
||||
const dispatchSpy = jest.spyOn(dis, "dispatch");
|
||||
|
||||
describe("UseSystemFontController", () => {
|
||||
it("dispatches a font size action on change", () => {
|
||||
const getValueSpy = jest.spyOn(SettingsStore, "getValue").mockReturnValue(12);
|
||||
const controller = new UseSystemFontController();
|
||||
|
||||
controller.onChange(SettingLevel.ACCOUNT, "$room:server", true);
|
||||
|
||||
expect(dispatchSpy).toHaveBeenCalledWith({
|
||||
action: Action.UpdateSystemFont,
|
||||
useSystemFont: true,
|
||||
font: 12,
|
||||
});
|
||||
|
||||
expect(getValueSpy).toHaveBeenCalledWith("systemFont");
|
||||
});
|
||||
});
|
|
@ -24,9 +24,15 @@ import { Action } from "../../../src/dispatcher/actions";
|
|||
import { untilDispatch } from "../../test-utils";
|
||||
import defaultDispatcher from "../../../src/dispatcher/dispatcher";
|
||||
|
||||
async function setSystemFont(font: string): Promise<void> {
|
||||
async function setSystemFont(font: string | false): Promise<void> {
|
||||
await SettingsStore.setValue("systemFont", null, SettingLevel.DEVICE, font || "");
|
||||
await SettingsStore.setValue("useSystemFont", null, SettingLevel.DEVICE, !!font);
|
||||
await SettingsStore.setValue("systemFont", null, SettingLevel.DEVICE, font);
|
||||
await untilDispatch(Action.UpdateSystemFont);
|
||||
await sleep(1); // await the FontWatcher doing its action
|
||||
}
|
||||
|
||||
async function setUseBundledEmojiFont(use: boolean): Promise<void> {
|
||||
await SettingsStore.setValue("useBundledEmojiFont", null, SettingLevel.DEVICE, use);
|
||||
await untilDispatch(Action.UpdateSystemFont);
|
||||
await sleep(1); // await the FontWatcher doing its action
|
||||
}
|
||||
|
@ -34,6 +40,9 @@ async function setSystemFont(font: string): Promise<void> {
|
|||
const getFontFamily = () => {
|
||||
return document.body.style.getPropertyValue(FontWatcher.FONT_FAMILY_CUSTOM_PROPERTY);
|
||||
};
|
||||
const getEmojiFontFamily = () => {
|
||||
return document.body.style.getPropertyValue(FontWatcher.EMOJI_FONT_FAMILY_CUSTOM_PROPERTY);
|
||||
};
|
||||
|
||||
describe("FontWatcher", function () {
|
||||
it("should load font on start()", async () => {
|
||||
|
@ -85,6 +94,31 @@ describe("FontWatcher", function () {
|
|||
});
|
||||
});
|
||||
|
||||
describe("Sets bundled emoji font as expected", () => {
|
||||
let fontWatcher: FontWatcher;
|
||||
beforeEach(async () => {
|
||||
await setSystemFont(false);
|
||||
fontWatcher = new FontWatcher();
|
||||
await fontWatcher.start();
|
||||
});
|
||||
afterEach(() => {
|
||||
fontWatcher.stop();
|
||||
});
|
||||
|
||||
it("by default does not add Twemoji font", async () => {
|
||||
expect(getEmojiFontFamily()).toMatchInlineSnapshot(`""`);
|
||||
});
|
||||
it("adds Twemoji font when enabled", async () => {
|
||||
await setUseBundledEmojiFont(true);
|
||||
expect(getEmojiFontFamily()).toMatchInlineSnapshot(`"Twemoji"`);
|
||||
});
|
||||
it("works in conjunction with useSystemFont", async () => {
|
||||
await setSystemFont(`"Commodore 64"`);
|
||||
await setUseBundledEmojiFont(true);
|
||||
expect(getFontFamily()).toMatchInlineSnapshot(`""Commodore 64", Twemoji"`);
|
||||
});
|
||||
});
|
||||
|
||||
describe("Migrates baseFontSize", () => {
|
||||
let watcher: FontWatcher | undefined;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue