Hyprpanel now accurately identifies the submap on startup. (#317)

* Hyprpanel now accurately identifies the submap on startup.

* Update default submap logic.

* Separate logic from component
This commit is contained in:
Jas Singh
2024-10-08 21:42:01 -07:00
committed by GitHub
parent f2985e7c78
commit 2e66d801fd
3 changed files with 36 additions and 9 deletions

View File

@@ -0,0 +1,20 @@
import { Variable } from 'types/variable';
const hyprland = await Service.import('hyprland');
export const isSubmapEnabled = (submap: string, enabled: string, disabled: string): string => {
return submap !== 'default' ? enabled : disabled;
};
export const getInitialSubmap = (submapStatus: Variable<string>): void => {
let submap = hyprland.message('submap');
const newLineCarriage = /\n/g;
submap = submap.replace(newLineCarriage, '');
if (submap === 'unknown request') {
submap = 'default';
}
submapStatus.value = submap;
};

View File

@@ -7,7 +7,8 @@ import Button from 'types/widgets/button';
import { Variable as VariableType } from 'types/variable'; import { Variable as VariableType } from 'types/variable';
import { Attribute, Child } from 'lib/types/widget'; import { Attribute, Child } from 'lib/types/widget';
import { BarBoxChild } from 'lib/types/bar'; import { BarBoxChild } from 'lib/types/bar';
import { caapitalizeFirstLetter } from 'lib/utils'; import { capitalizeFirstLetter } from 'lib/utils';
import { getInitialSubmap, isSubmapEnabled } from './helpers';
const { const {
label, label,
@@ -23,18 +24,24 @@ const {
scrollDown, scrollDown,
} = options.bar.customModules.submap; } = options.bar.customModules.submap;
const submapStatus: VariableType<string> = Variable(''); const submapStatus: VariableType<string> = Variable('default');
hyprland.connect('submap', (_, currentSubmap) => { hyprland.connect('submap', (_, currentSubmap) => {
if (currentSubmap.length === 0) {
submapStatus.value = 'default';
} else {
submapStatus.value = currentSubmap; submapStatus.value = currentSubmap;
}
}); });
getInitialSubmap(submapStatus);
export const Submap = (): BarBoxChild => { export const Submap = (): BarBoxChild => {
const submapModule = module({ const submapModule = module({
textIcon: Utils.merge( textIcon: Utils.merge(
[submapStatus.bind('value'), enabledIcon.bind('value'), disabledIcon.bind('value')], [submapStatus.bind('value'), enabledIcon.bind('value'), disabledIcon.bind('value')],
(status, enabled, disabled) => { (status, enabled, disabled) => {
return status.length > 0 ? enabled : disabled; return isSubmapEnabled(status, enabled, disabled);
}, },
), ),
tooltipText: Utils.merge( tooltipText: Utils.merge(
@@ -46,9 +53,9 @@ export const Submap = (): BarBoxChild => {
], ],
(status, enabled, disabled, showSmName) => { (status, enabled, disabled, showSmName) => {
if (showSmName) { if (showSmName) {
return status.length > 0 ? caapitalizeFirstLetter(status) : 'Default'; return capitalizeFirstLetter(status);
} }
return status.length > 0 ? enabled : disabled; return isSubmapEnabled(status, enabled, disabled);
}, },
), ),
boxClass: 'submap', boxClass: 'submap',
@@ -61,9 +68,9 @@ export const Submap = (): BarBoxChild => {
], ],
(status, enabled, disabled, showSmName) => { (status, enabled, disabled, showSmName) => {
if (showSmName) { if (showSmName) {
return status.length > 0 ? caapitalizeFirstLetter(status) : 'Default'; return capitalizeFirstLetter(status);
} }
return status.length > 0 ? enabled : disabled; return isSubmapEnabled(status, enabled, disabled);
}, },
), ),
showLabelBinding: label.bind('value'), showLabelBinding: label.bind('value'),

View File

@@ -190,6 +190,6 @@ export const isValidGjsColor = (color: string): boolean => {
return false; return false;
}; };
export const caapitalizeFirstLetter = (str: string): string => { export const capitalizeFirstLetter = (str: string): string => {
return str.charAt(0).toUpperCase() + str.slice(1); return str.charAt(0).toUpperCase() + str.slice(1);
}; };