Skip to content

Commit f69a8be

Browse files
imorlandStyleCIBot
andauthored
chore: refactor settings, general cleanup (#75)
* chore: refactor settings, general * Apply fixes from StyleCI * chore: drop support for php 7.3 --------- Co-authored-by: StyleCI Bot <[email protected]>
1 parent 8ef2f4f commit f69a8be

File tree

24 files changed

+2340
-4525
lines changed

24 files changed

+2340
-4525
lines changed

.github/workflows/backend.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ on: [workflow_dispatch, push, pull_request]
44

55
jobs:
66
run:
7-
uses: flarum/framework/.github/workflows/REUSABLE_backend.yml@main
7+
uses: flarum/framework/.github/workflows/REUSABLE_backend.yml@1.x
88
with:
99
enable_backend_testing: false
1010
enable_phpstan: true
11+
php_versions: '["7.4", "8.0", "8.1", "8.2", "8.3"]'
1112

1213
backend_directory: .

.github/workflows/frontend.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on: [workflow_dispatch, push, pull_request]
44

55
jobs:
66
run:
7-
uses: flarum/framework/.github/workflows/REUSABLE_frontend.yml@main
7+
uses: flarum/framework/.github/workflows/REUSABLE_frontend.yml@1.x
88
with:
99
enable_bundlewatch: false
1010
enable_prettier: true

composer.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
}
3737
],
3838
"require": {
39-
"flarum/core": "^1.5.0",
40-
"fof/extend": "^1.0.0"
39+
"php": "^7.4 || ^8.0",
40+
"flarum/core": "^1.7.0"
4141
},
4242
"replace": {
4343
"reflar/nightmode": "*"
@@ -82,6 +82,7 @@
8282
"analyse:phpstan": "Run static analysis"
8383
},
8484
"require-dev": {
85-
"flarum/phpstan": "*"
85+
"flarum/phpstan": "*",
86+
"fof/default-user-preferences": "*"
8687
}
8788
}

extend.php

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
namespace FoF\NightMode;
1313

1414
use Flarum\Extend;
15-
use Flarum\Extension\ExtensionManager;
1615
use Flarum\Settings\SettingsRepositoryInterface;
1716
use FoF\DefaultUserPreferences\Extend\RegisterUserPreferenceDefault;
1817

@@ -25,13 +24,14 @@
2524

2625
(new Extend\Frontend('admin'))
2726
->js(__DIR__.'/js/dist/admin.js')
27+
->css(__DIR__.'/resources/less/admin.less')
2828
->content(Content\HideBody::class)
2929
->content(Content\PatchUnsupportedAutoNightmode::class),
3030

3131
new Extend\Locales(__DIR__.'/resources/locale'),
3232

3333
(new Extend\ServiceProvider())
34-
->register(AssetsServiceProvider::class),
34+
->register(Provider\AssetsServiceProvider::class),
3535

3636
(new Extend\User())
3737
->registerPreference('fofNightMode', function ($value) {
@@ -45,6 +45,7 @@
4545

4646
(new Extend\Settings())
4747
->default('fof-nightmode.default_theme', 0)
48+
->default('fofNightMode.show_theme_toggle_on_header_always', false)
4849
->serializeToForum('fofNightMode_autoUnsupportedFallback', 'theme_dark_mode', function ($val) {
4950
$val = (bool) $val;
5051

@@ -55,10 +56,13 @@
5556

5657
return 1;
5758
}, false)
58-
->serializeToForum('fofNightMode.showThemeToggleOnHeaderAlways', 'fofNightMode.show_theme_toggle_on_header_always', 'boolval', false)
59+
->serializeToForum('fofNightMode.showThemeToggleOnHeaderAlways', 'fofNightMode.show_theme_toggle_on_header_always', 'boolval')
5960
->serializeToForum('fof-nightmode.default_theme', 'fof-nightmode.default_theme', 'intval'),
6061

61-
class_exists(RegisterUserPreferenceDefault::class) && resolve(ExtensionManager::class)->isEnabled('fof-default-user-preferences') ? (new RegisterUserPreferenceDefault())
62-
->default('fofNightMode', 0, 'number')
63-
->default('fofNightMode_perDevice', false, 'bool') : [],
62+
(new Extend\Conditional())
63+
->whenExtensionEnabled('fof-default-user-preferences', fn () => [
64+
(new RegisterUserPreferenceDefault())
65+
->default('fofNightMode', 0, 'number')
66+
->default('fofNightMode_perDevice', false, 'bool'),
67+
]),
6468
];

js/.yarn/releases/yarn-3.2.1.cjs

Lines changed: 0 additions & 786 deletions
This file was deleted.

js/.yarnrc.yml

Lines changed: 0 additions & 3 deletions
This file was deleted.
File renamed without changes.
File renamed without changes.

js/package.json

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
11
{
2-
"private": true,
32
"name": "@fof/nightmode",
3+
"version": "0.0.0",
4+
"private": true,
45
"prettier": "@flarum/prettier-config",
56
"dependencies": {
6-
"@flarum/prettier-config": "^1.0.0",
7-
"es-cookie": "^1.4.0",
8-
"flarum-tsconfig": "^1.0.2",
9-
"flarum-webpack-config": "^2.0.2",
10-
"webpack": "^5.88.2",
11-
"webpack-cli": "^5.1.4"
12-
},
13-
"scripts": {
14-
"dev": "webpack --mode development --watch",
15-
"build": "webpack --mode production",
16-
"format": "prettier --write src",
17-
"format-check": "prettier --check src"
7+
"@flarum/prettier-config": "^1.0.0",
8+
"flarum-tsconfig": "^1.0.2",
9+
"flarum-webpack-config": "^2.0.2",
10+
"webpack": "^5.88.1",
11+
"webpack-cli": "^5.1.4",
12+
"es-cookie": "^1.5.0"
1813
},
1914
"devDependencies": {
20-
"prettier": "^3.0.3"
15+
"prettier": "^3.0.0"
2116
},
22-
"packageManager": "[email protected]"
23-
}
17+
"scripts": {
18+
"dev": "webpack --mode development --watch",
19+
"build": "webpack --mode production",
20+
"format": "prettier --write src",
21+
"format-check": "prettier --check src"
22+
}
23+
}
24+
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import app from 'flarum/admin/app';
2+
import ExtensionPage from 'flarum/admin/components/ExtensionPage';
3+
import ItemList from 'flarum/common/utils/ItemList';
4+
import Themes from '../../common/Themes';
5+
import extractText from 'flarum/common/utils/extractText';
6+
import type Mithril from 'mithril';
7+
8+
export default class NightmodeSettingsPage extends ExtensionPage {
9+
content() {
10+
return (
11+
<div className="NightmodeSettingsPage">
12+
<div className="container">
13+
<div className="NightmodeSettingsTabPage NightmodeSettingsPage--settings">
14+
<div className="Form">
15+
{this.settingsItems().toArray()}
16+
<div className="Form-group">{this.submitButton()}</div>
17+
</div>
18+
</div>
19+
</div>
20+
</div>
21+
);
22+
}
23+
24+
settingsItems(): ItemList<Mithril.Children> {
25+
const items = new ItemList<Mithril.Children>();
26+
27+
items.add(
28+
'general',
29+
<div className="Section">
30+
<h3>{app.translator.trans('fof-nightmode.admin.settings.general.heading')}</h3>
31+
<p className="helpText">{app.translator.trans('fof-nightmode.admin.settings.general.help')}</p>
32+
{this.generalItems().toArray()}
33+
</div>
34+
);
35+
36+
return items;
37+
}
38+
39+
generalItems(): ItemList<Mithril.Children> {
40+
const items = new ItemList<Mithril.Children>();
41+
42+
items.add(
43+
'header-toggle',
44+
this.buildSettingComponent({
45+
label: app.translator.trans('fof-nightmode.admin.settings.modal.always_show_theme_toggle_on_header'),
46+
setting: 'fofNightMode.show_theme_toggle_on_header_always',
47+
type: 'switch',
48+
})
49+
);
50+
51+
items.add(
52+
'default-theme',
53+
this.buildSettingComponent({
54+
label: app.translator.trans('fof-nightmode.admin.settings.modal.default_theme'),
55+
help: app.translator.trans('fof-nightmode.admin.settings.modal.default_theme_helper'),
56+
setting: 'fof-nightmode.default_theme',
57+
type: 'select',
58+
options: this.populateThemes(),
59+
})
60+
);
61+
62+
return items;
63+
}
64+
65+
populateThemes(): Record<number, string> {
66+
let options: Record<number, string> = {};
67+
68+
// add themes based on JS enum
69+
Object.keys(Themes).forEach((theme, i) => {
70+
if (theme === 'DEFAULT') return;
71+
72+
options[i] = extractText(app.translator.trans(`fof-nightmode.admin.settings.modal.theme_${theme.toLowerCase()}`));
73+
});
74+
75+
return options;
76+
}
77+
}

0 commit comments

Comments
 (0)