web/satellite: remove duplicated default project creation code

Moved creation of default project to vuex store to dispatch it in different places.
It removes duplicated code fragments

Change-Id: Ic5e52776727e681797bbd76342b78480812552d1
This commit is contained in:
Vitalii Shpital 2021-06-01 14:13:05 +03:00
parent 9e2d837473
commit c26d52a538
3 changed files with 32 additions and 49 deletions

View File

@ -101,25 +101,7 @@ export default class NameStep extends Vue {
// Used like backwards compatibility for the old accounts without any project. // Used like backwards compatibility for the old accounts without any project.
if (this.$store.getters.projects.length === 0) { if (this.$store.getters.projects.length === 0) {
try { try {
const FIRST_PAGE = 1; await this.$store.dispatch(PROJECTS_ACTIONS.CREATE_DEFAULT_PROJECT);
const UNTITLED_PROJECT_NAME = 'My First Project';
const UNTITLED_PROJECT_DESCRIPTION = '___';
const project = new ProjectFields(
UNTITLED_PROJECT_NAME,
UNTITLED_PROJECT_DESCRIPTION,
this.$store.getters.user.id,
);
const createdProject = await this.$store.dispatch(PROJECTS_ACTIONS.CREATE, project);
await this.$store.dispatch(PROJECTS_ACTIONS.SELECT, createdProject.id);
await this.$store.dispatch(PM_ACTIONS.CLEAR);
await this.$store.dispatch(PM_ACTIONS.FETCH, FIRST_PAGE);
await this.$store.dispatch(PAYMENTS_ACTIONS.GET_PAYMENTS_HISTORY);
await this.$store.dispatch(PAYMENTS_ACTIONS.GET_BALANCE);
await this.$store.dispatch(PAYMENTS_ACTIONS.GET_PROJECT_USAGE_AND_CHARGES_CURRENT_ROLLUP);
await this.$store.dispatch(PROJECTS_ACTIONS.GET_LIMITS, createdProject.id);
await this.$store.dispatch(ACCESS_GRANTS_ACTIONS.CLEAR);
await this.$store.dispatch(BUCKET_ACTIONS.CLEAR);
} catch (error) { } catch (error) {
await this.$notify.error(error.message); await this.$notify.error(error.message);
this.isLoading = false; this.isLoading = false;

View File

@ -145,7 +145,7 @@ export default class OverviewStep extends Vue {
await this.analytics.linkEventTriggered(AnalyticsEvent.PATH_SELECTED, 'GatewayMT'); await this.analytics.linkEventTriggered(AnalyticsEvent.PATH_SELECTED, 'GatewayMT');
try { try {
await this.createFirstProject(); await this.$store.dispatch(PROJECTS_ACTIONS.CREATE_DEFAULT_PROJECT);
this.isLoading = false; this.isLoading = false;
@ -168,7 +168,7 @@ export default class OverviewStep extends Vue {
await this.analytics.linkEventTriggered(AnalyticsEvent.PATH_SELECTED, 'CLI'); await this.analytics.linkEventTriggered(AnalyticsEvent.PATH_SELECTED, 'CLI');
try { try {
await this.createFirstProject(); await this.$store.dispatch(PROJECTS_ACTIONS.CREATE_DEFAULT_PROJECT);
this.isLoading = false; this.isLoading = false;
@ -190,7 +190,7 @@ export default class OverviewStep extends Vue {
await this.analytics.linkEventTriggered(AnalyticsEvent.PATH_SELECTED, 'Continue in Browser'); await this.analytics.linkEventTriggered(AnalyticsEvent.PATH_SELECTED, 'Continue in Browser');
try { try {
await this.createFirstProject(); await this.$store.dispatch(PROJECTS_ACTIONS.CREATE_DEFAULT_PROJECT);
this.isLoading = false; this.isLoading = false;
@ -211,7 +211,7 @@ export default class OverviewStep extends Vue {
this.isLoading = true; this.isLoading = true;
try { try {
await this.createFirstProject(); await this.$store.dispatch(PROJECTS_ACTIONS.CREATE_DEFAULT_PROJECT);
this.isLoading = false; this.isLoading = false;
@ -222,32 +222,6 @@ export default class OverviewStep extends Vue {
} }
} }
/**
* Creates untitled project in a background.
*/
private async createFirstProject(): Promise<void> {
const FIRST_PAGE = 1;
const UNTITLED_PROJECT_NAME = 'My First Project';
const UNTITLED_PROJECT_DESCRIPTION = '___';
const project = new ProjectFields(
UNTITLED_PROJECT_NAME,
UNTITLED_PROJECT_DESCRIPTION,
this.$store.getters.user.id,
);
const createdProject = await this.$store.dispatch(PROJECTS_ACTIONS.CREATE, project);
const createdProjectId = createdProject.id;
await this.$store.dispatch(PROJECTS_ACTIONS.SELECT, createdProjectId);
await this.$store.dispatch(PM_ACTIONS.CLEAR);
await this.$store.dispatch(PM_ACTIONS.FETCH, FIRST_PAGE);
await this.$store.dispatch(PAYMENTS_ACTIONS.GET_PAYMENTS_HISTORY);
await this.$store.dispatch(PAYMENTS_ACTIONS.GET_BALANCE);
await this.$store.dispatch(PAYMENTS_ACTIONS.GET_PROJECT_USAGE_AND_CHARGES_CURRENT_ROLLUP);
await this.$store.dispatch(PROJECTS_ACTIONS.GET_LIMITS, createdProjectId);
await this.$store.dispatch(ACCESS_GRANTS_ACTIONS.CLEAR);
await this.$store.dispatch(BUCKET_ACTIONS.CLEAR);
}
/** /**
* Indicates if user has at least one project. * Indicates if user has at least one project.
*/ */

View File

@ -2,6 +2,9 @@
// See LICENSE for copying information. // See LICENSE for copying information.
import { StoreModule } from '@/store'; import { StoreModule } from '@/store';
import { ACCESS_GRANTS_ACTIONS } from '@/store/modules/accessGrants';
import { BUCKET_ACTIONS } from '@/store/modules/buckets';
import { PAYMENTS_ACTIONS } from '@/store/modules/payments';
import { import {
Project, Project,
ProjectFields, ProjectFields,
@ -10,11 +13,13 @@ import {
ProjectsCursor, ProjectsCursor,
ProjectsPage, ProjectsPage,
} from '@/types/projects'; } from '@/types/projects';
import { PM_ACTIONS } from '@/utils/constants/actionNames';
export const PROJECTS_ACTIONS = { export const PROJECTS_ACTIONS = {
FETCH: 'fetchProjects', FETCH: 'fetchProjects',
FETCH_OWNED: 'fetchOwnedProjects', FETCH_OWNED: 'fetchOwnedProjects',
CREATE: 'createProject', CREATE: 'createProject',
CREATE_DEFAULT_PROJECT: 'createDefaultProject',
SELECT: 'selectProject', SELECT: 'selectProject',
UPDATE_NAME: 'updateProjectName', UPDATE_NAME: 'updateProjectName',
UPDATE_DESCRIPTION: 'updateProjectDescription', UPDATE_DESCRIPTION: 'updateProjectDescription',
@ -49,6 +54,7 @@ export class ProjectsState {
const { const {
FETCH, FETCH,
CREATE, CREATE,
CREATE_DEFAULT_PROJECT,
SELECT, SELECT,
UPDATE_NAME, UPDATE_NAME,
UPDATE_DESCRIPTION, UPDATE_DESCRIPTION,
@ -163,6 +169,27 @@ export function makeProjectsModule(api: ProjectsApi): StoreModule<ProjectsState>
return project; return project;
}, },
[CREATE_DEFAULT_PROJECT]: async function ({rootGetters, dispatch}: any): Promise<void> {
const FIRST_PAGE = 1;
const UNTITLED_PROJECT_NAME = 'My First Project';
const UNTITLED_PROJECT_DESCRIPTION = '___';
const project = new ProjectFields(
UNTITLED_PROJECT_NAME,
UNTITLED_PROJECT_DESCRIPTION,
rootGetters.user.id,
);
const createdProject = await dispatch(PROJECTS_ACTIONS.CREATE, project, {root: true});
await dispatch(PROJECTS_ACTIONS.SELECT, createdProject.id, {root: true});
await dispatch(PM_ACTIONS.CLEAR, null, {root: true});
await dispatch(PM_ACTIONS.FETCH, FIRST_PAGE, {root: true});
await dispatch(PAYMENTS_ACTIONS.GET_PAYMENTS_HISTORY, null, {root: true});
await dispatch(PAYMENTS_ACTIONS.GET_BALANCE, null, {root: true});
await dispatch(PAYMENTS_ACTIONS.GET_PROJECT_USAGE_AND_CHARGES_CURRENT_ROLLUP, null, {root: true});
await dispatch(PROJECTS_ACTIONS.GET_LIMITS, createdProject.id, {root: true});
await dispatch(ACCESS_GRANTS_ACTIONS.CLEAR, null, {root: true});
await dispatch(BUCKET_ACTIONS.CLEAR, null, {root: true});
},
[SELECT]: function ({commit}: any, projectID: string): void { [SELECT]: function ({commit}: any, projectID: string): void {
commit(SELECT_PROJECT, projectID); commit(SELECT_PROJECT, projectID);
}, },