stackchain-dashboard/frontend/my-work.js
timmy de2f8d8fcc
All checks were successful
CI / lint (pull_request) Successful in 8s
CI / build-frontend (pull_request) Successful in 5s
feat: add mobile My Work inbox (#115)
2026-08-06 15:24:37 +00:00

29 lines
1.1 KiB
JavaScript

function buildMyWork(data) {
const login = data.user?.login || '';
const issues = (data.issues || []).map((item) => ({ ...item, kind: 'issue' }));
const pulls = (data.pull_requests || []).map((item) => ({ ...item, kind: 'pull' }));
const priorityLabels = ['p0', 'priority-high', 'critical'];
return issues.concat(pulls).map((item) => {
const labels = item.labels || [];
const priorityLabel = labels.find((label) =>
priorityLabels.includes(String(label).toLowerCase())
);
const assigned = (item.assignees || []).includes(login);
return {
...item,
key: (item.repository || 'unknown') + '#' + item.number,
reason: priorityLabel ? priorityLabel + ' priority' : (assigned ? 'Assigned to you' : 'Open work'),
_priority: priorityLabel ? 0 : (assigned ? 1 : 2),
};
}).sort((left, right) =>
left._priority - right._priority ||
String(right.updated_at || '').localeCompare(String(left.updated_at || '')) ||
left.key.localeCompare(right.key)
).map(({ _priority, ...item }) => item);
}
if (typeof module !== 'undefined' && module.exports) {
module.exports = buildMyWork;
}