Browse Source

Cancel/create movie requests trigger movie ticket updates

dev
David Ludwig 4 years ago
parent
commit
6e736cafdf
2 changed files with 39 additions and 4 deletions
  1. +9
    -4
      services/webui/src/app/store/actions.ts
  2. +30
    -0
      services/webui/src/app/store/mutations.ts

+ 9
- 4
services/webui/src/app/store/actions.ts View File

@ -276,7 +276,8 @@ export const actions: Actions<IState, GettersTypes, MutationsTypes, ActionsTypes
/**
* Cancel a movie request
*/
async [Action.CancelMovieRequest]({dispatch}, ticketId: number) {
async [Action.CancelMovieRequest]({commit, dispatch}, ticketId: number) {
commit(Mutation.RemoveMovieTicket, ticketId);
return await dispatch(Action.Delete, {
path: `/api/movie/request/${ticketId}`
});
@ -285,9 +286,13 @@ export const actions: Actions<IState, GettersTypes, MutationsTypes, ActionsTypes
/**
* Create a movie request
*/
async [Action.CreateMovieRequest]({dispatch}, tmdbId: string|number) {
return await dispatch(Action.Post, {
path: `/api/movie/request/create/${tmdbId}`
[Action.CreateMovieRequest]({commit, dispatch}, tmdbId: string|number) {
return new Promise<[number, IApiDataResponse<{ ticketId: number }>]>(async resolve => {
let [status, response]: [number, IApiDataResponse<{ ticketId: number }>] = await dispatch(Action.Post, {
path: `/api/movie/request/create/${tmdbId}`
});
commit(Mutation.StoreMovieTicket, { tmdbId, ticketId: response.result.ticketId });
resolve([status, response]);
});
},


+ 30
- 0
services/webui/src/app/store/mutations.ts View File

@ -16,6 +16,8 @@ export enum Mutation {
FreeMovies = "FREE_MOVIES",
StoreMovies = "STORE_MOVIES",
RemoveMovieTicket = "REMOVE_MOVIE_TICKET",
StoreMovieTicket = "STORE_MOVIE_TICKET",
UpdateMovieTickets = "UPDATE_MOVIE_TICKETS"
}
@ -31,6 +33,8 @@ export type MutationsTypes<S = IState> = {
// Movie Store
[Mutation.FreeMovies] : (state: S, movies: IMovie[]) => void,
[Mutation.StoreMovies] : (state: S, movies: IMovie[]) => void,
[Mutation.RemoveMovieTicket] : (state: S, ticketId: number) => void,
[Mutation.StoreMovieTicket] : (state: S, payload: { tmdbId: string|number, ticketId: number}) => void,
[Mutation.UpdateMovieTickets]: (state: S) => void
}
@ -131,6 +135,32 @@ export const mutations: MutationsTypes & MutationTree<IState> = {
}
},
/**
* Remove the given movie ticket
*/
[Mutation.RemoveMovieTicket](state, ticketId) {
let tmdbId = state.movieTickets[ticketId];
if (tmdbId === undefined) {
return;
}
delete state.movieTickets[ticketId];
state.movies[tmdbId].movie.ticketId = null;
state.movies[tmdbId].movie.progress = null;
},
/**
* Store a new ticket for the given movie
*/
[Mutation.StoreMovieTicket](state, {tmdbId, ticketId}) {
let entry = state.movies[tmdbId];
if (entry === undefined) {
return;
}
entry.movie.ticketId = ticketId;
entry.movie.progress = 0;
state.movieTickets[ticketId] = <string>tmdbId;
},
/**
* Update the cached movie tickets in the store
*/


Loading…
Cancel
Save