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

Commit 71f46ff

Browse files
feat(#322): remove deck from list if deleted
1 parent a5c76d3 commit 71f46ff

File tree

4 files changed

+26
-38
lines changed

4 files changed

+26
-38
lines changed

studio/src/app/components/core/app-delete-deck-action/app-delete-deck-action.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export class AppDeleteDeckAction {
1818

1919
private deckService: DeckService;
2020

21-
@Event() deckDeleted: EventEmitter<void>;
21+
@Event() deckDeleted: EventEmitter<string>;
2222

2323
constructor() {
2424
this.deckService = DeckService.getInstance();
@@ -61,7 +61,7 @@ export class AppDeleteDeckAction {
6161

6262
await this.deckService.delete(this.deck.id);
6363

64-
this.deckDeleted.emit();
64+
this.deckDeleted.emit(this.deck.id);
6565

6666
await loading.dismiss();
6767

studio/src/app/pages/core/app-dashboard/app-dashboard.scss

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -62,17 +62,6 @@ app-dashboard {
6262
height: 38vh;
6363
}
6464

65-
&.deleted:after {
66-
content: "";
67-
position: absolute;
68-
top: 0;
69-
left: 0;
70-
width: 100%;
71-
height: 100%;
72-
background: rgba(var(--ion-color-light-rgb), 0.8);
73-
cursor: initial;
74-
}
75-
7665
app-delete-deck-action {
7766
position: absolute;
7867
top: 0;

studio/src/app/pages/core/app-dashboard/app-dashboard.tsx

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ interface DeckAndFirstSlide {
1919
slide: any;
2020
style: any;
2121
background: any;
22-
deleted: boolean;
2322
}
2423

2524
@Component({
@@ -101,8 +100,7 @@ export class AppDashboard {
101100
deck: deck,
102101
slide: element,
103102
style: style,
104-
background: background,
105-
deleted: false
103+
background: background
106104
});
107105
} catch (err) {
108106
resolve(undefined);
@@ -166,10 +164,6 @@ export class AppDashboard {
166164
return;
167165
}
168166

169-
if (deck.deleted) {
170-
return;
171-
}
172-
173167
const url: string = `/editor/${deck.deck.id}`;
174168

175169
this.navService.navigate({
@@ -178,14 +172,30 @@ export class AppDashboard {
178172
});
179173
}
180174

181-
private displayDeckDeleted(deck: DeckAndFirstSlide): Promise<void> {
175+
private removeDeletedDeck($event: CustomEvent): Promise<void> {
182176
return new Promise<void>(async (resolve) => {
183-
if (!deck || !deck.deck) {
177+
if (!$event || !$event.detail || $event.detail === undefined || $event.detail === '') {
178+
resolve();
179+
return;
180+
}
181+
182+
const deckId: string = $event.detail;
183+
184+
if (!this.decks || this.decks.length < 0) {
185+
resolve();
186+
return;
187+
}
188+
189+
const index: number = this.decks.findIndex((matchDeck: DeckAndFirstSlide) => {
190+
return matchDeck.deck && matchDeck.deck.id === deckId
191+
});
192+
193+
if (index < 0) {
184194
resolve();
185195
return;
186196
}
187197

188-
deck.deleted = true;
198+
this.decks.splice(index, 1);
189199

190200
await this.filterDecks(null);
191201

@@ -216,8 +226,7 @@ export class AppDashboard {
216226
return <main class="ion-padding">
217227
<h1>Oh, hi! Good to have you.</h1>
218228
<p class="ion-padding-top">
219-
<ion-router-link onClick={() => this.signIn()}>Sign in</ion-router-link>
220-
to access your presentations.</p>
229+
<ion-router-link onClick={() => this.signIn()}>Sign in</ion-router-link> to access to your presentations.</p>
221230
</main>
222231
}
223232

@@ -249,12 +258,10 @@ export class AppDashboard {
249258
private renderDecksCards() {
250259
return (
251260
this.filteredDecks.map((deck: DeckAndFirstSlide) => {
252-
const deckClass: string = `item ion-no-margin ${deck.deleted ? 'deleted' : ''}`;
253-
254-
return <ion-card class={deckClass} onClick={() => this.navigateDeck(deck)}>
261+
return <ion-card class="item ion-no-margin" onClick={() => this.navigateDeck(deck)} key={deck.deck.id}>
255262
{this.renderDeck(deck)}
256263

257-
{this.renderDeckDeleteAction(deck)}
264+
<app-delete-deck-action deck={deck.deck} onDeckDeleted={($event: CustomEvent) => this.removeDeletedDeck($event)}></app-delete-deck-action>
258265
</ion-card>;
259266
})
260267
);
@@ -271,12 +278,4 @@ export class AppDashboard {
271278
}
272279
}
273280

274-
private renderDeckDeleteAction(deck: DeckAndFirstSlide) {
275-
if (!deck || deck.deleted) {
276-
return undefined;
277-
} else {
278-
return <app-delete-deck-action deck={deck.deck} onDeckDeleted={() => this.displayDeckDeleted(deck)}></app-delete-deck-action>
279-
}
280-
}
281-
282281
}

studio/src/components.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -606,7 +606,7 @@ declare namespace LocalJSX {
606606
}
607607
interface AppDeleteDeckAction extends JSXBase.HTMLAttributes<HTMLAppDeleteDeckActionElement> {
608608
'deck'?: Deck;
609-
'onDeckDeleted'?: (event: CustomEvent<void>) => void;
609+
'onDeckDeleted'?: (event: CustomEvent<string>) => void;
610610
}
611611
interface AppDeveloper extends JSXBase.HTMLAttributes<HTMLAppDeveloperElement> {}
612612
interface AppEditor extends JSXBase.HTMLAttributes<HTMLAppEditorElement> {

0 commit comments

Comments
 (0)