This repository has been archived on 2025-06-10. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
server/frontend/ui/src/stores/issues.js

55 lines
1.5 KiB
JavaScript

import { derived, writable } from 'svelte/store';
function createIssuesStore() {
const { subscribe, set, update } = writable({issues: [], issues_idx: {}, issues_nb_responses: 0, issues_need_info: 0});
return {
subscribe,
update: (res_issues, cb=null) => {
if (res_issues.status === 200) {
res_issues.json().then((issues) => {
const issues_idx = {};
let issues_nb_responses = 0;
let issues_need_info = 0;
issues.forEach(function(issue, k) {
issues_idx[issue.id] = issue;
issues_nb_responses += issue.texts.length;
if (issue.state == 'need-info') issues_need_info++;
issues[k].texts.reverse();
})
update((i) => (Object.assign(i, {issues, issues_idx, issues_nb_responses, issues_need_info})));
if (cb) {
cb(issues, issues_idx, issues_nb_responses, issues_need_info);
}
});
} else if (res_issues.status === 404) {
update((i) => ({issues: [], issues_idx: {}, issues_nb_responses: 0, issues_need_info: 0}));
}
},
};
}
export const issuesStore = createIssuesStore();
export const issues = derived(
issuesStore,
($issuesStore) => ($issuesStore.issues),
);
export const issues_idx = derived(
issuesStore,
($issuesStore) => ($issuesStore.issues_idx),
);
export const issues_nb_responses = derived(
issuesStore,
($issuesStore) => ($issuesStore.issues_nb_responses),
);
export const issues_need_info = derived(
issuesStore,
($issuesStore) => ($issuesStore.issues_need_info),
);
export const issues_known_responses = writable(0);