Skip to content

Commit

Permalink
fix(cache): use cacheNoArgs for better performance
Browse files Browse the repository at this point in the history
  • Loading branch information
JellyBrick committed Aug 4, 2024
1 parent ac51f79 commit 59a5679
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 27 deletions.
4 changes: 2 additions & 2 deletions src/plugins/in-app-menu/renderer/IconButton.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { JSX } from 'solid-js';
import { css } from 'solid-styled-components';

import { cache } from '@/providers/decorators';
import { cacheNoArgs } from '@/providers/decorators';

const iconButton = cache(() => css`
const iconButton = cacheNoArgs(() => css`
-webkit-app-region: none;
background: transparent;
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/in-app-menu/renderer/MenuButton.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { JSX, splitProps } from 'solid-js';
import { css } from 'solid-styled-components';

import { cache } from '@/providers/decorators';
import { cacheNoArgs } from '@/providers/decorators';

const menuStyle = cache(() => css`
const menuStyle = cacheNoArgs(() => css`
-webkit-app-region: none;
display: flex;
Expand Down
6 changes: 3 additions & 3 deletions src/plugins/in-app-menu/renderer/Panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import { Transition } from 'solid-transition-group';
import { autoUpdate, flip, offset, OffsetOptions, size } from '@floating-ui/dom';
import { useFloating } from 'solid-floating-ui';

import { cache } from '@/providers/decorators';
import { cacheNoArgs } from '@/providers/decorators';

const panelStyle = cache(() => css`
const panelStyle = cacheNoArgs(() => css`
position: fixed;
top: var(--offset-y, 0);
left: var(--offset-x, 0);
Expand Down Expand Up @@ -36,7 +36,7 @@ const panelStyle = cache(() => css`
transform-origin: var(--origin-x, 50%) var(--origin-y, 50%);
`);

const animationStyle = cache(() => ({
const animationStyle = cacheNoArgs(() => ({
enter: css`
opacity: 0;
transform: scale(0.9);
Expand Down
16 changes: 8 additions & 8 deletions src/plugins/in-app-menu/renderer/PanelItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import { useFloating } from 'solid-floating-ui';
import { autoUpdate, offset, size } from '@floating-ui/dom';

import { Panel } from './Panel';
import { cache } from '@/providers/decorators';
import { cacheNoArgs } from '@/providers/decorators';

const itemStyle = cache(() => css`
const itemStyle = cacheNoArgs(() => css`
position: relative;
-webkit-app-region: none;
Expand Down Expand Up @@ -47,18 +47,18 @@ const itemStyle = cache(() => css`
}
`);

const itemIconStyle = cache(() => css`
const itemIconStyle = cacheNoArgs(() => css`
height: 32px;
padding: 4px;
color: white;
`);

const itemLabelStyle = cache(() => css`
const itemLabelStyle = cacheNoArgs(() => css`
font-size: 12px;
color: white;
`);

const itemChipStyle = cache(() => css`
const itemChipStyle = cacheNoArgs(() => css`
display: flex;
justify-content: center;
align-items: center;
Expand All @@ -76,7 +76,7 @@ const itemChipStyle = cache(() => css`
line-height: 1;
`);

const toolTipStyle = cache(() => css`
const toolTipStyle = cacheNoArgs(() => css`
min-width: 32px;
width: 100%;
height: 100%;
Expand All @@ -92,7 +92,7 @@ const toolTipStyle = cache(() => css`
font-size: 10px;
`);

const popupStyle = cache(() => css`
const popupStyle = cacheNoArgs(() => css`
position: fixed;
top: var(--offset-y, 0);
left: var(--offset-x, 0);
Expand All @@ -105,7 +105,7 @@ const popupStyle = cache(() => css`
`);

const animationStyle = cache(() => ({
const animationStyle = cacheNoArgs(() => ({
enter: css`
opacity: 0;
transform: scale(0.9);
Expand Down
19 changes: 9 additions & 10 deletions src/plugins/in-app-menu/renderer/TitleBar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ import { PanelItem } from './PanelItem';
import { IconButton } from './IconButton';
import { WindowController } from './WindowController';

import { cache } from '@/providers/decorators';
import { cacheNoArgs } from '@/providers/decorators';

import type { RendererContext } from '@/types/contexts';
import type { InAppMenuConfig } from '../constants';

const titleStyle = cache(() => css`
const titleStyle = cacheNoArgs(() => css`
-webkit-app-region: drag;
box-sizing: border-box;
Expand Down Expand Up @@ -50,15 +50,15 @@ const titleStyle = cache(() => css`
}
`);

const separatorStyle = cache(() => css`
const separatorStyle = cacheNoArgs(() => css`
min-height: 1px;
height: 1px;
margin: 4px 0;
background-color: rgba(255, 255, 255, 0.2);
`);

const animationStyle = cache(() => ({
const animationStyle = cacheNoArgs(() => ({
enter: css`
opacity: 0;
transform: translateX(-50%) scale(0.8);
Expand Down Expand Up @@ -271,19 +271,18 @@ export const TitleBar = (props: TitleBarProps) => {
// tracking mouse position
window.addEventListener('mousemove', listener);
const ytmusicAppLayout = document.querySelector<HTMLElement>('#layout');
ytmusicAppLayout?.addEventListener("scroll",()=>{
ytmusicAppLayout?.addEventListener('scroll', () => {
const scrollValue = ytmusicAppLayout.scrollTop;
if (scrollValue > 20){
ytmusicAppLayout.classList.add("content-scrolled");
ytmusicAppLayout.classList.add('content-scrolled');
}
else{
ytmusicAppLayout.classList.remove("content-scrolled");
ytmusicAppLayout.classList.remove('content-scrolled');
}
})

});
});



createEffect(() => {
if (!menu() && data()) {
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/in-app-menu/renderer/WindowController.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import { css } from 'solid-styled-components';
import { Show } from 'solid-js';

import { IconButton } from './IconButton';
import { cache } from '@/providers/decorators';
import { cacheNoArgs } from '@/providers/decorators';

const containerStyle = cache(() => css`
const containerStyle = cacheNoArgs(() => css`
display: flex;
justify-content: flex-end;
align-items: center;
Expand Down
10 changes: 10 additions & 0 deletions src/providers/decorators.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,16 @@ export function cache<T extends (...params: P) => R, P extends never[], R>(
}) as T;
}

export function cacheNoArgs<R>(fn: () => R): () => R {
let cached: R;
return () => {
if (cached === undefined) {
cached = fn();
}
return cached;
};
}

/*
The following are currently unused, but potentially useful in the future
*/
Expand Down

0 comments on commit 59a5679

Please sign in to comment.