Skip to content

Commit f026cdd

Browse files
committed
better separation
1 parent d1e093d commit f026cdd

File tree

12 files changed

+207
-177
lines changed

12 files changed

+207
-177
lines changed

special-pages/pages/new-tab/app/entry-points/privacyStats.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { h } from 'preact';
2-
import { PrivacyStatsCustomized } from '../privacy-stats/components/PrivacyStats.js';
32
import { Centered } from '../components/Layout.js';
3+
import { PrivacyStatsCustomized } from '../privacy-stats/components/PrivacyStatsCustomized.js';
44

55
export function factory() {
66
return (

special-pages/pages/new-tab/app/mock-transport.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { TestTransportConfig } from '@duckduckgo/messaging';
22

3-
import { stats } from './privacy-stats/mocks/stats.js';
3+
import { privacyStatsMocks } from './privacy-stats/mocks/privacy-stats.mocks.js';
44
import { rmfDataExamples } from './remote-messaging-framework/mocks/rmf.data.js';
55
import { favorites, gen } from './favorites/mocks/favorites.data.js';
66
import { updateNotificationExamples } from './update-notification/mocks/update-notification.data.js';
@@ -315,8 +315,8 @@ export function mockTransport() {
315315
const int = setInterval(() => {
316316
if (inc === max) return clearInterval(int);
317317
const next = {
318-
...stats.willUpdate,
319-
trackerCompanies: stats.willUpdate.trackerCompanies.map((x, index) => {
318+
...privacyStatsMocks.willUpdate,
319+
trackerCompanies: privacyStatsMocks.willUpdate.trackerCompanies.map((x, index) => {
320320
return {
321321
...x,
322322
count: x.count + inc * index,
@@ -330,7 +330,7 @@ export function mockTransport() {
330330
clearInterval(int);
331331
};
332332
} else if (statsVariant === 'growing') {
333-
const list = stats.many.trackerCompanies;
333+
const list = privacyStatsMocks.many.trackerCompanies;
334334
let index = 0;
335335
const max = Math.min(updateMaxCount, list.length);
336336
const int = setInterval(() => {
@@ -380,10 +380,10 @@ export function mockTransport() {
380380
switch (msg.method) {
381381
case 'stats_getData': {
382382
const statsVariant = url.searchParams.get('stats');
383-
if (statsVariant && statsVariant in stats) {
384-
return Promise.resolve(stats[statsVariant]);
383+
if (statsVariant && statsVariant in privacyStatsMocks) {
384+
return Promise.resolve(privacyStatsMocks[statsVariant]);
385385
}
386-
return Promise.resolve(stats.few);
386+
return Promise.resolve(privacyStatsMocks.few);
387387
}
388388
case 'stats_getConfig': {
389389
/** @type {StatsConfig} */
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import { createContext, h } from 'preact';
2+
import { useContext } from 'preact/hooks';
3+
import { useMemo, useState } from 'preact/hooks';
4+
import { useMessaging } from '../../types.js';
5+
6+
/**
7+
* These are the API methods exposed
8+
*/
9+
export const BodyExpansionApiContext = createContext({
10+
showMore() {},
11+
showLess() {},
12+
});
13+
14+
/**
15+
* This is the single value exposed
16+
*/
17+
export const BodyExpansionContext = createContext(/** @type {import('../../../types/new-tab').Expansion} */ ('collapsed'));
18+
19+
/**
20+
* Helper to access the value
21+
*/
22+
export function useBodyExpansion() {
23+
return useContext(BodyExpansionContext);
24+
}
25+
26+
/**
27+
* Helper to access the API
28+
*/
29+
export function useBodyExpansionApi() {
30+
return useContext(BodyExpansionApiContext);
31+
}
32+
33+
export function BodyExpanderProvider(props) {
34+
const messaging = useMessaging();
35+
const [bodyExpansion, setBodyExpansion] = useState(/** @type {import('../../../types/new-tab').Expansion} */ ('collapsed'));
36+
37+
const bodyExpansionApi = useMemo(() => {
38+
return {
39+
showMore() {
40+
messaging.statsShowMore();
41+
setBodyExpansion('expanded');
42+
},
43+
showLess() {
44+
messaging.statsShowLess();
45+
setBodyExpansion('collapsed');
46+
},
47+
};
48+
}, [messaging]);
49+
50+
return (
51+
<BodyExpansionApiContext.Provider value={bodyExpansionApi}>
52+
<BodyExpansionContext.Provider value={bodyExpansion}>{props.children}</BodyExpansionContext.Provider>
53+
</BodyExpansionApiContext.Provider>
54+
);
55+
}

special-pages/pages/new-tab/app/privacy-stats/components/PrivacyStats.examples.js

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { h } from 'preact';
22
import { PrivacyStatsMockProvider } from '../mocks/PrivacyStatsMockProvider.js';
3-
import { PrivacyStatsConsumer, PrivacyStatsBody } from './PrivacyStats.js';
4-
import { stats } from '../mocks/stats.js';
3+
import { PrivacyStatsBody } from './PrivacyStats.js';
4+
import { privacyStatsMocks } from '../mocks/privacy-stats.mocks.js';
5+
import { PrivacyStatsConsumer } from './PrivacyStatsConsumer.js';
56

67
/** @type {Record<string, {factory: () => import("preact").ComponentChild}>} */
78

@@ -15,28 +16,28 @@ export const privacyStatsExamples = {
1516
},
1617
'stats.many': {
1718
factory: () => (
18-
<PrivacyStatsMockProvider ticker={true} data={stats.many}>
19+
<PrivacyStatsMockProvider ticker={true} data={privacyStatsMocks.many}>
1920
<PrivacyStatsConsumer />
2021
</PrivacyStatsMockProvider>
2122
),
2223
},
2324
'stats.topAndOneOther': {
2425
factory: () => (
25-
<PrivacyStatsMockProvider ticker={true} data={stats.topAndOneOther}>
26+
<PrivacyStatsMockProvider ticker={true} data={privacyStatsMocks.topAndOneOther}>
2627
<PrivacyStatsConsumer />
2728
</PrivacyStatsMockProvider>
2829
),
2930
},
3031
'stats.onlyTop': {
3132
factory: () => (
32-
<PrivacyStatsMockProvider ticker={true} data={stats.onlyTop}>
33+
<PrivacyStatsMockProvider ticker={true} data={privacyStatsMocks.onlyTop}>
3334
<PrivacyStatsConsumer />
3435
</PrivacyStatsMockProvider>
3536
),
3637
},
3738
'stats.onlyOther': {
3839
factory: () => (
39-
<PrivacyStatsMockProvider ticker={true} data={stats.onlyother}>
40+
<PrivacyStatsMockProvider ticker={true} data={privacyStatsMocks.onlyother}>
4041
<PrivacyStatsConsumer />
4142
</PrivacyStatsMockProvider>
4243
),
@@ -50,27 +51,29 @@ export const privacyStatsExamples = {
5051
},
5152
'stats.single': {
5253
factory: () => (
53-
<PrivacyStatsMockProvider data={stats.single}>
54+
<PrivacyStatsMockProvider data={privacyStatsMocks.single}>
5455
<PrivacyStatsConsumer />
5556
</PrivacyStatsMockProvider>
5657
),
5758
},
5859
'stats.none': {
5960
factory: () => (
60-
<PrivacyStatsMockProvider data={stats.none}>
61+
<PrivacyStatsMockProvider data={privacyStatsMocks.none}>
6162
<PrivacyStatsConsumer />
6263
</PrivacyStatsMockProvider>
6364
),
6465
},
6566
'stats.norecent': {
6667
factory: () => (
67-
<PrivacyStatsMockProvider data={stats.norecent}>
68+
<PrivacyStatsMockProvider data={privacyStatsMocks.norecent}>
6869
<PrivacyStatsConsumer />
6970
</PrivacyStatsMockProvider>
7071
),
7172
},
7273
'stats.list': {
73-
factory: () => <PrivacyStatsBody trackerCompanies={stats.few.trackerCompanies} id={'example-stats.list'} />,
74+
factory: () => (
75+
<PrivacyStatsBody trackerCompanies={privacyStatsMocks.few.trackerCompanies} id={'example-stats.list'} expansion={'expanded'} />
76+
),
7477
},
7578
};
7679

0 commit comments

Comments
 (0)