Compare commits

..

2 commits

Author SHA1 Message Date
7150e4744c stash 2024-06-18 18:13:17 +02:00
bc0500e7f4 stash 2024-06-18 18:01:55 +02:00
3 changed files with 29 additions and 6 deletions

View file

@ -43,6 +43,8 @@ const store = createStore({
users: 0, users: 0,
groups: 0, groups: 0,
states: 0, states: 0,
messageTemplates: 0,
shippingVouchers: 0,
}, },
persistent_loaded: false, persistent_loaded: false,
shared_loaded: false, shared_loaded: false,
@ -215,12 +217,14 @@ const store = createStore({
}, },
setMessageTemplates(state, templates) { setMessageTemplates(state, templates) {
state.messageTemplates = templates; state.messageTemplates = templates;
state.fetchedData = {...state.fetchedData, messageTemplates: Date.now()};
}, },
setMessageTemplateVariables(state, variables) { setMessageTemplateVariables(state, variables) {
state.messageTemplateVariables = variables; state.messageTemplateVariables = variables;
}, },
setShippingVouchers(state, codes) { setShippingVouchers(state, codes) {
state.shippingVouchers = codes; state.shippingVouchers = codes;
state.fetchedData = {...state.fetchedData, shippingVouchers: Date.now()};
}, },
}, },
actions: { actions: {
@ -394,7 +398,10 @@ const store = createStore({
}, },
async sendMail({commit, dispatch, state}, {id, message}) { async sendMail({commit, dispatch, state}, {id, message}) {
const {data, success} = await http.post(`/2/tickets/${id}/reply/`, {message}, state.user.token); const {data, success} = await http.post(`/2/tickets/${id}/reply/`, {message}, state.user.token);
if (data && success) {
state.fetchedData.tickets = 0;
await dispatch('loadTickets'); await dispatch('loadTickets');
}
}, },
async postManualTicket({commit, dispatch, state}, {sender, message, title,}) { async postManualTicket({commit, dispatch, state}, {sender, message, title,}) {
const {data, success} = await http.post(`/2/tickets/manual/`, { const {data, success} = await http.post(`/2/tickets/manual/`, {
@ -407,7 +414,10 @@ const store = createStore({
}, },
async postComment({commit, dispatch, state}, {id, message}) { async postComment({commit, dispatch, state}, {id, message}) {
const {data, success} = await http.post(`/2/tickets/${id}/comment/`, {comment: message}, state.user.token); const {data, success} = await http.post(`/2/tickets/${id}/comment/`, {comment: message}, state.user.token);
if (data && success) {
state.fetchedData.tickets = 0;
await dispatch('loadTickets'); await dispatch('loadTickets');
}
}, },
async loadUsers({commit, state}) { async loadUsers({commit, state}) {
if (!state.user.token) return; if (!state.user.token) return;
@ -432,6 +442,8 @@ const store = createStore({
commit('updateTicket', data); commit('updateTicket', data);
}, },
async fetchMessageTemplates({commit, state}) { async fetchMessageTemplates({commit, state}) {
if (!state.user.token) return;
if (state.messageTemplates.length > 0) return;
const {data, success} = await http.get('/2/message_templates/', state.user.token); const {data, success} = await http.get('/2/message_templates/', state.user.token);
if (data && success) { if (data && success) {
commit('setMessageTemplates', data); commit('setMessageTemplates', data);
@ -441,10 +453,13 @@ const store = createStore({
const {data, success} = await http.patch(`/2/message_templates/${template.id}/`, const {data, success} = await http.patch(`/2/message_templates/${template.id}/`,
{'message': template.message}, state.user.token); {'message': template.message}, state.user.token);
if (data && success) { if (data && success) {
state.fetchedData.messageTemplates = 0;
dispatch('fetchMessageTemplates'); dispatch('fetchMessageTemplates');
} }
}, },
async fetchMessageTemplateVariables({commit, state}) { async fetchMessageTemplateVariables({commit, state}) {
if (!state.user.token) return;
if (state.messageTemplateVariables.length > 0) return;
const {data, success} = await http.get('/2/message_template_variables/', state.user.token); const {data, success} = await http.get('/2/message_template_variables/', state.user.token);
if (data && success) { if (data && success) {
commit('setMessageTemplateVariables', data); commit('setMessageTemplateVariables', data);
@ -460,6 +475,8 @@ const store = createStore({
} }
}, },
async fetchShippingVouchers({commit, state}) { async fetchShippingVouchers({commit, state}) {
if (!state.user.token) return;
if (state.fetchedData.shippingVouchers > Date.now() - 1000 * 60 * 60 * 24) return;
const {data, success} = await http.get('/2/shipping_vouchers/', state.user.token); const {data, success} = await http.get('/2/shipping_vouchers/', state.user.token);
if (data && success) { if (data && success) {
commit('setShippingVouchers', data); commit('setShippingVouchers', data);
@ -468,6 +485,7 @@ const store = createStore({
async createShippingVoucher({dispatch, state}, code) { async createShippingVoucher({dispatch, state}, code) {
const {data, success} = await http.post('/2/shipping_vouchers/', code, state.user.token); const {data, success} = await http.post('/2/shipping_vouchers/', code, state.user.token);
if (data && success) { if (data && success) {
state.fetchedData.shippingVouchers = 0;
dispatch('fetchShippingVouchers'); dispatch('fetchShippingVouchers');
} }
}, },
@ -478,7 +496,9 @@ const store = createStore({
success success
} = await http.patch(`/2/shipping_vouchers/${id}/`, {issue_thread: ticket}, state.user.token); } = await http.patch(`/2/shipping_vouchers/${id}/`, {issue_thread: ticket}, state.user.token);
if (data && success) { if (data && success) {
dispatch('fetchShippingVouchers'); state.fetchedData.shippingVouchers = 0;
state.fetchedData.tickets = 0;
await Promise.all([dispatch('loadTickets'), dispatch('fetchShippingVouchers')]);
} }
} }
}, },

View file

@ -42,7 +42,8 @@
</option> </option>
</select> </select>
<button class="form-control btn btn-success" <button class="form-control btn btn-success"
@click="claimShippingVoucher({ticket: ticket.id, shipping_voucher_type})"> @click="claimShippingVoucher({ticket: ticket.id, shipping_voucher_type}).then(()=>shipping_voucher_type=null)"
:disabled="!shipping_voucher_type">
Claim&nbsp;Shipping&nbsp;Voucher Claim&nbsp;Shipping&nbsp;Voucher
</button> </button>
</div> </div>

View file

@ -16,8 +16,10 @@
<ul> <ul>
<li v-for="voucher in shippingVouchers" :key="voucher.voucher"> <li v-for="voucher in shippingVouchers" :key="voucher.voucher">
<span v-if="voucher.issue_thread == null">{{ voucher.type }} - {{ voucher.voucher }}</span> <span v-if="voucher.issue_thread == null">{{ voucher.type }} - {{ voucher.voucher }}</span>
<span v-else><s style="color:var(--danger)">{{ voucher.type }} - {{ voucher.voucher }}</s> used in <a <span v-else><s style="color:var(--danger)">{{ voucher.type }} - {{ voucher.voucher }}</s> used in
:href="'/'+ getEventSlug + '/ticket/' + voucher.issue_thread">#{{ voucher.issue_thread }}</a></span> <router-link :to="'/'+ getEventSlug + '/ticket/' + voucher.issue_thread">#{{
voucher.issue_thread
}}</router-link></span>
</li> </li>
</ul> </ul>
</div> </div>