Skip to content
This repository was archived by the owner on Feb 6, 2024. It is now read-only.

Commit 7c7a766

Browse files
feat: setup supported features "deck or/and doc" (#1463)
Signed-off-by: peterpeterparker <[email protected]>
1 parent c1cbeba commit 7c7a766

File tree

9 files changed

+71
-28
lines changed

9 files changed

+71
-28
lines changed

studio/src/app/components/core/app-menu/app-menu.tsx

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ import {cloud} from '../../../utils/core/environment.utils';
77

88
import {AppIcon} from '../app-icon/app-icon';
99

10+
import {EnvironmentAppConfig, EnvironmentAppConfigFeature} from '../../../config/environment-config';
11+
import {EnvironmentConfigService} from '../../../services/environment/environment-config.service';
12+
1013
@Component({
1114
tag: 'app-menu',
1215
styleUrl: 'app-menu.scss',
@@ -15,6 +18,8 @@ import {AppIcon} from '../app-icon/app-icon';
1518
export class AppMenu {
1619
@Element() el: HTMLElement;
1720

21+
private features: EnvironmentAppConfigFeature[] = EnvironmentConfigService.getInstance().get<EnvironmentAppConfig>('app').features;
22+
1823
private signIn: boolean = cloud();
1924

2025
render() {
@@ -61,6 +66,10 @@ export class AppMenu {
6166
return undefined;
6267
}
6368

69+
if (!this.features.includes('deck')) {
70+
return undefined;
71+
}
72+
6473
return (
6574
<ion-item button href="/decks" routerDirection="forward">
6675
<AppIcon name="deck" path="icons" ariaLabel="" ariaHidden={true} lazy={true} slot="start"></AppIcon>
@@ -74,6 +83,10 @@ export class AppMenu {
7483
return undefined;
7584
}
7685

86+
if (!this.features.includes('doc')) {
87+
return undefined;
88+
}
89+
7790
return (
7891
<ion-item button href="/docs" routerDirection="forward">
7992
<AppIcon name="doc" path="icons" ariaLabel="" ariaHidden={true} lazy={true} slot="start"></AppIcon>
@@ -96,6 +109,10 @@ export class AppMenu {
96109
}
97110

98111
private renderInteract() {
112+
if (!this.features.includes('deck')) {
113+
return undefined;
114+
}
115+
99116
return (
100117
<Fragment>
101118
<ion-item button href="/poll" routerDirection="forward">

studio/src/app/config/environment-config.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,11 @@ export interface EnvironmentDeckDeckGoConfig {
3232
socketUrl: string;
3333
}
3434

35+
export type EnvironmentAppConfigFeature = 'doc' | 'deck';
36+
3537
export interface EnvironmentAppConfig {
3638
mock: boolean;
39+
features: [EnvironmentAppConfigFeature, ...EnvironmentAppConfigFeature[]];
3740
}
3841

3942
export interface EnvironmentCloudApi {

studio/src/app/pages/editor/app-editor.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ import {initSyncState, sync} from '../../providers/sync/sync.provider';
1212
import {worker} from '../../workers/sync.worker.ts?worker';
1313
import {startSyncTimer, stopSyncTimer} from '../../workers/sync.worker';
1414

15+
import {EnvironmentConfigService} from '../../services/environment/environment-config.service';
16+
import {EnvironmentAppConfig} from '../../config/environment-config';
17+
1518
@Component({
1619
tag: 'app-editor',
1720
styleUrl: 'app-editor.scss'
@@ -59,8 +62,10 @@ export class AppDeckEditor implements ComponentInterface {
5962
}
6063

6164
private async init() {
65+
const {features} = EnvironmentConfigService.getInstance().get<EnvironmentAppConfig>('app');
66+
6267
const editor: Editor | undefined = await getEdit();
63-
this.type = editor?.type || 'deck';
68+
this.type = editor?.type || features[0];
6469
}
6570

6671
private async destroy() {

studio/src/app/popovers/core/nav/app-new/app-new.scss

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ app-new {
99

1010
justify-items: center;
1111

12-
padding: 8px 16px 16px;
12+
padding: 8px 16px;
1313

1414
button {
1515
grid-row-start: 2;
@@ -61,9 +61,9 @@ app-new {
6161
}
6262

6363
p {
64-
font-size: var(--font-size-small);
64+
font-size: var(--font-size-normal);
6565
text-align: center;
66-
padding: 8px 32px 14px;
66+
padding: 16px 32px;
6767
margin: 0;
6868
}
6969
}

studio/src/app/popovers/core/nav/app-new/app-new.tsx

Lines changed: 34 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import {ComponentInterface, h, Component, Element, Host, State} from '@stencil/c
22

33
import i18n from '../../../../stores/i18n.store';
44
import {AppIcon} from '../../../../components/core/app-icon/app-icon';
5+
import {EnvironmentAppConfig, EnvironmentAppConfigFeature} from '../../../../config/environment-config';
6+
import {EnvironmentConfigService} from '../../../../services/environment/environment-config.service';
57

68
@Component({
79
tag: 'app-new',
@@ -13,42 +15,54 @@ export class AppNew implements ComponentInterface {
1315
@State()
1416
private type: 'deck' | 'doc' | undefined;
1517

18+
private features: EnvironmentAppConfigFeature[] = EnvironmentConfigService.getInstance().get<EnvironmentAppConfig>('app').features;
19+
1620
async closePopover(confirm: boolean) {
1721
if (!confirm) {
1822
await (this.el.closest('ion-popover') as HTMLIonPopoverElement).dismiss();
1923
return;
2024
}
2125

22-
await (this.el.closest('ion-popover') as HTMLIonPopoverElement).dismiss(this.type);
26+
await (this.el.closest('ion-popover') as HTMLIonPopoverElement).dismiss(this.type || this.features[0]);
2327
}
2428

2529
render() {
2630
return (
2731
<Host>
28-
<div class="type">
29-
<div>{this.type === 'doc' && <mark>{i18n.state.tools.new_experimental}</mark>}</div>
30-
31-
<article>
32-
<button onClick={() => (this.type = 'deck')} class={`ion-activatable ${this.type === 'deck' ? 'selected' : ''}`}>
33-
<ion-ripple-effect></ion-ripple-effect>
34-
<AppIcon name="deck" path="icons" ariaLabel="" ariaHidden={true} lazy={false} slot="start"></AppIcon>
35-
<ion-label>{i18n.state.tools.new_deck}</ion-label>
36-
</button>
37-
</article>
38-
39-
<article>
40-
<button onClick={() => (this.type = 'doc')} class={`ion-activatable ${this.type === 'doc' ? 'selected' : ''}`}>
41-
<ion-ripple-effect></ion-ripple-effect>
42-
<AppIcon name="doc" path="icons" ariaLabel="" ariaHidden={true} lazy={false} slot="start"></AppIcon>
43-
<ion-label>{i18n.state.tools.new_doc}</ion-label>
44-
</button>
45-
</article>
46-
</div>
32+
{this.renderTypes()}
4733

4834
<p>{i18n.state.tools.new_warning_text}</p>
4935

5036
<app-popover-confirm onConfirm={({detail}: CustomEvent<boolean>) => this.closePopover(detail)}></app-popover-confirm>
5137
</Host>
5238
);
5339
}
40+
41+
private renderTypes() {
42+
if (this.features.length === 1) {
43+
return undefined;
44+
}
45+
46+
return (
47+
<div class="type">
48+
<div>{this.type === 'doc' && <mark>{i18n.state.tools.new_experimental}</mark>}</div>
49+
50+
<article>
51+
<button onClick={() => (this.type = 'deck')} class={`ion-activatable ${this.type === 'deck' ? 'selected' : ''}`}>
52+
<ion-ripple-effect></ion-ripple-effect>
53+
<AppIcon name="deck" path="icons" ariaLabel="" ariaHidden={true} lazy={false} slot="start"></AppIcon>
54+
<ion-label>{i18n.state.tools.new_deck}</ion-label>
55+
</button>
56+
</article>
57+
58+
<article>
59+
<button onClick={() => (this.type = 'doc')} class={`ion-activatable ${this.type === 'doc' ? 'selected' : ''}`}>
60+
<ion-ripple-effect></ion-ripple-effect>
61+
<AppIcon name="doc" path="icons" ariaLabel="" ariaHidden={true} lazy={false} slot="start"></AppIcon>
62+
<ion-label>{i18n.state.tools.new_doc}</ion-label>
63+
</button>
64+
</article>
65+
</div>
66+
);
67+
}
5468
}

studio/src/global/app-dev.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ import {setupConfig as setupDeckGoConfig} from '../app/config/environment-config
3737

3838
setupDeckGoConfig({
3939
app: {
40-
mock: true
40+
mock: true,
41+
features: ['deck', 'doc']
4142
},
4243
deckdeckgo: {
4344
website: 'https://deckdeckgo.com',

studio/src/global/app-ic.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ import {setupConfig as setupDeckGoConfig} from '../app/config/environment-config
3737

3838
setupDeckGoConfig({
3939
app: {
40-
mock: false
40+
mock: false,
41+
features: ['doc']
4142
},
4243
deckdeckgo: {
4344
website: 'https://deckdeckgo.com',

studio/src/global/app-staging.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ import {setupConfig as setupDeckGoConfig} from '../app/config/environment-config
3737

3838
setupDeckGoConfig({
3939
app: {
40-
mock: true
40+
mock: true,
41+
features: ['deck', 'doc']
4142
},
4243
deckdeckgo: {
4344
website: 'https://deckdeckgo.com',

studio/src/global/app.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ import {setupConfig as setupDeckGoConfig} from '../app/config/environment-config
3737

3838
setupDeckGoConfig({
3939
app: {
40-
mock: false
40+
mock: false,
41+
features: ['deck']
4142
},
4243
deckdeckgo: {
4344
website: 'https://deckdeckgo.com',

0 commit comments

Comments
 (0)