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);