/
manage.ts
85 lines (75 loc) · 2.53 KB
/
manage.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import { Component } from 'vue-property-decorator';
import { Api } from '../../../../../_common/api/api.service';
import AppExpand from '../../../../../_common/expand/expand.vue';
import { Game } from '../../../../../_common/game/game.model';
import { BaseRouteComponent, RouteResolver } from '../../../../../_common/route/route-component';
import { WithRouteStore } from '../../../../../_common/route/route-store';
import { AppState, AppStore } from '../../../../../_common/store/app-store';
import { AppTimeAgo } from '../../../../../_common/time/ago/ago';
import { AppTooltip } from '../../../../../_common/tooltip/tooltip-directive';
import { Translate } from '../../../../../_common/translate/translate.service';
import { AppGamePerms } from '../../../../components/game/perms/perms';
import { IntentService } from '../../../../components/intent/intent.service';
import AppPageHeader from '../../../../components/page-header/page-header.vue';
import { store } from '../../../../store';
import { RouteStore, routeStore, RouteStoreModule, RouteStoreName } from './manage.store';
export const ManageGameThemeKey = 'manage-game';
@Component({
name: 'RouteDashGamesManage',
components: {
AppPageHeader,
AppExpand,
AppTimeAgo,
AppGamePerms,
},
directives: {
AppTooltip,
},
})
@WithRouteStore({
store,
routeStoreName: RouteStoreName,
routeStoreClass: RouteStore,
})
@RouteResolver({
deps: { params: ['id'], query: ['intent'] },
async resolver({ route }) {
const intentRedirect = IntentService.checkRoute(route, {
intent: 'accept-game-collaboration',
message: Translate.$gettext(`You're now a collaborator for this project!`),
});
if (intentRedirect) {
return intentRedirect;
}
return Api.sendRequest('/web/dash/developer/games/' + route.params.id);
},
resolveStore({ payload }) {
routeStore.commit('populate', payload);
},
})
export default class RouteDashGamesManage extends BaseRouteComponent {
@AppState
user!: AppStore['user'];
@RouteStoreModule.State
game!: RouteStore['game'];
@RouteStoreModule.State
isWizard!: RouteStore['isWizard'];
@RouteStoreModule.Mutation
populate!: RouteStore['populate'];
readonly Game = Game;
readonly GAME_LOCKED_STATUS_DMCA = Game.LOCKED_STATUS_DMCA;
readonly GAME_LOCKED_STATUS_ADULT = Game.LOCKED_STATUS_ADULT;
routeResolved() {
this.setPageTheme();
}
routeDestroyed() {
store.commit('theme/clearPageTheme', ManageGameThemeKey);
}
private setPageTheme() {
const theme = this.game?.theme ?? null;
store.commit('theme/setPageTheme', {
key: ManageGameThemeKey,
theme,
});
}
}