summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTobias Järvelöv <tobias.jarvelov@mullvad.net>2025-04-03 21:38:30 +0200
committerSebastian Holmin <sebastian.holmin@mullvad.net>2025-05-28 13:25:24 +0200
commit7d1a9599d0a8031003722698901d82b866b0eb50 (patch)
treea4ec32afe8af857fa5df5aa1c22165a535c09c14
parentbc8f945e8734522b1beb52930a3aba1f638a08ea (diff)
downloadmullvadvpn-7d1a9599d0a8031003722698901d82b866b0eb50.tar.xz
mullvadvpn-7d1a9599d0a8031003722698901d82b866b0eb50.zip
Refactor changelog view
- Add component to display "No changes for this platform" - Reuse ChangeLogList component - Reuse global redux selector hooks - Move logic into hooks
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/ChangelogView.tsx43
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/components/index.ts1
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/components/no-changelog-updates/NoChangelogUpdates.tsx17
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/components/no-changelog-updates/index.ts1
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/index.ts4
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/useChangelog.ts7
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/useHasChangelog.ts9
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/useShowChangelogList.ts9
-rw-r--r--desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/useShowNoChangelogUpdates.ts9
9 files changed, 69 insertions, 31 deletions
diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/ChangelogView.tsx b/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/ChangelogView.tsx
index 31a65eb396..ff591c2fc1 100644
--- a/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/ChangelogView.tsx
+++ b/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/ChangelogView.tsx
@@ -1,27 +1,22 @@
-import styled from 'styled-components';
-
import { messages } from '../../../../shared/gettext';
-import { BodySmall, Container, Flex, TitleBig, TitleLarge } from '../../../lib/components';
+import { Container, Flex, TitleBig, TitleLarge } from '../../../lib/components';
import { useHistory } from '../../../lib/history';
-import { useSelector } from '../../../redux/store';
+import { useVersionCurrent } from '../../../redux/hooks';
import { AppNavigationHeader } from '../../';
+import { ChangelogList } from '../../changelog-list';
import { BackAction } from '../../KeyboardNavigation';
import { Layout, SettingsContainer } from '../../Layout';
import { NavigationContainer } from '../../NavigationContainer';
import { NavigationScrollbars } from '../../NavigationScrollbars';
-
-const StyledList = styled(Flex)({
- listStyleType: 'disc',
- paddingLeft: 0,
- li: {
- marginLeft: '1.5em',
- },
-});
+import { NoChangelogUpdates } from './components';
+import { useChangelog, useShowChangelogList, useShowNoChangelogUpdates } from './hooks';
export const ChangelogView = () => {
const { pop } = useHistory();
- const changelog = useSelector((state) => state.userInterface.changelog);
- const version = useSelector((state) => state.version.current);
+ const { current } = useVersionCurrent();
+ const changelog = useChangelog();
+ const showChangelogList = useShowChangelogList();
+ const showNoChangelogUpdates = useShowNoChangelogUpdates();
return (
<BackAction action={pop}>
@@ -49,25 +44,11 @@ export const ChangelogView = () => {
</Container>
<Flex $flexDirection="column" $gap="small">
<Container size="4">
- <TitleLarge as="h2">{version}</TitleLarge>
+ <TitleLarge as="h2">{current}</TitleLarge>
</Container>
<Container size="3" $flexDirection="column">
- {changelog.length ? (
- <StyledList as="ul" $flexDirection="column" $gap="medium">
- {changelog.map((item, i) => (
- <BodySmall as="li" key={i} color="whiteAlpha60">
- {item}
- </BodySmall>
- ))}
- </StyledList>
- ) : (
- <BodySmall color="whiteAlpha60">
- {messages.pgettext(
- 'changelog-view',
- 'No updates or changes were made in this release for this platform.',
- )}
- </BodySmall>
- )}
+ {showChangelogList && <ChangelogList changelog={changelog} />}
+ {showNoChangelogUpdates && <NoChangelogUpdates />}
</Container>
</Flex>
</Flex>
diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/components/index.ts b/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/components/index.ts
new file mode 100644
index 0000000000..e838cd8521
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/components/index.ts
@@ -0,0 +1 @@
+export * from './no-changelog-updates';
diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/components/no-changelog-updates/NoChangelogUpdates.tsx b/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/components/no-changelog-updates/NoChangelogUpdates.tsx
new file mode 100644
index 0000000000..d67269e8d2
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/components/no-changelog-updates/NoChangelogUpdates.tsx
@@ -0,0 +1,17 @@
+import { messages } from '../../../../../../shared/gettext';
+import { BodySmall } from '../../../../../lib/components';
+import { Colors } from '../../../../../lib/foundations';
+
+export function NoChangelogUpdates() {
+ return (
+ <BodySmall color={Colors.white60}>
+ {
+ // TRANSLATORS: Text displayed when there are no updates for this platform in the app version
+ messages.pgettext(
+ 'changelog-view',
+ 'No updates or changes were made in this release for this platform.',
+ )
+ }
+ </BodySmall>
+ );
+}
diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/components/no-changelog-updates/index.ts b/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/components/no-changelog-updates/index.ts
new file mode 100644
index 0000000000..095239a335
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/components/no-changelog-updates/index.ts
@@ -0,0 +1 @@
+export * from './NoChangelogUpdates';
diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/index.ts b/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/index.ts
new file mode 100644
index 0000000000..5f350effb0
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/index.ts
@@ -0,0 +1,4 @@
+export * from './useChangelog';
+export * from './useHasChangelog';
+export * from './useShowChangelogList';
+export * from './useShowNoChangelogUpdates';
diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/useChangelog.ts b/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/useChangelog.ts
new file mode 100644
index 0000000000..2b3236d5ee
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/useChangelog.ts
@@ -0,0 +1,7 @@
+import { useUserInterfaceChangelog } from '../../../../redux/hooks';
+
+export const useChangelog = () => {
+ const { changelog } = useUserInterfaceChangelog();
+
+ return changelog;
+};
diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/useHasChangelog.ts b/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/useHasChangelog.ts
new file mode 100644
index 0000000000..b1e232122a
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/useHasChangelog.ts
@@ -0,0 +1,9 @@
+import { useChangelog } from './useChangelog';
+
+export const useHasChangelog = () => {
+ const changelog = useChangelog();
+
+ const hasChangeLog = changelog.length > 0;
+
+ return hasChangeLog;
+};
diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/useShowChangelogList.ts b/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/useShowChangelogList.ts
new file mode 100644
index 0000000000..c4a11ac7cb
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/useShowChangelogList.ts
@@ -0,0 +1,9 @@
+import { useHasChangelog } from './useHasChangelog';
+
+export const useShowChangelogList = () => {
+ const hasChangeLog = useHasChangelog();
+
+ const showChangelog = hasChangeLog;
+
+ return showChangelog;
+};
diff --git a/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/useShowNoChangelogUpdates.ts b/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/useShowNoChangelogUpdates.ts
new file mode 100644
index 0000000000..cc30f5c5ac
--- /dev/null
+++ b/desktop/packages/mullvad-vpn/src/renderer/components/views/changelog/hooks/useShowNoChangelogUpdates.ts
@@ -0,0 +1,9 @@
+import { useHasChangelog } from './useHasChangelog';
+
+export const useShowNoChangelogUpdates = () => {
+ const hasChangelog = useHasChangelog();
+
+ const showNoChangelogUpdates = !hasChangelog;
+
+ return showNoChangelogUpdates;
+};