Skip to content

Commit 80feab9

Browse files
committed
fix: Sort pinned issues in extended search
1 parent b973056 commit 80feab9

File tree

3 files changed

+17
-14
lines changed

3 files changed

+17
-14
lines changed

src/components/issues/Issue.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,12 @@ const Issue = ({ issue, timerData, assignedToMe, pinned, remembered, onStart, on
154154
</div>
155155
</div>
156156
<div className="absolute top-2 right-2 flex justify-end items-start gap-x-1">
157-
{pinned && <FontAwesomeIcon icon={faStar} className="text-gray-300 dark:text-gray-600 focus:outline-none" tabIndex={-1} />}
157+
{pinned && (
158+
<>
159+
<Tooltip id="tooltip-pinned" place="left" delayShow={700} content="Issue is pinned at the top" className="italic" />
160+
<FontAwesomeIcon icon={faStar} className="text-gray-300 dark:text-gray-600 focus:outline-none" data-tooltip-id="tooltip-pinned" tabIndex={-1} />
161+
</>
162+
)}
158163
{!assignedToMe && (
159164
<>
160165
<Tooltip id="tooltip-not-assigned-to-me" place="left" delayShow={700} content="Issue is not assigned to you" className="italic" />

src/components/issues/IssuesList.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,18 @@ type PropTypes = {
2323
issuesData: ReturnType<typeof useStorage<IssuesData>>;
2424
};
2525

26-
const IssuesList = ({ account, issues, issuesData: { data: issuesData, setData: setIssuesData } }: PropTypes) => {
26+
const IssuesList = ({ account, issues: rawIssues, issuesData: { data: issuesData, setData: setIssuesData } }: PropTypes) => {
2727
const { settings } = useSettings();
2828

29+
const sortedIssues = rawIssues.sort((a, b) => {
30+
const pinnedA = issuesData[a.id]?.pinned || issuesData[a.id]?.favorite;
31+
const pinnedB = issuesData[b.id]?.pinned || issuesData[b.id]?.favorite;
32+
if (pinnedA && pinnedB) return new Date(a.updated_on).getTime() - new Date(a.updated_on).getTime();
33+
return pinnedA ? -1 : 1;
34+
});
35+
2936
const groupedIssues = Object.values(
30-
issues.reduce(
37+
sortedIssues.reduce(
3138
(
3239
result: {
3340
[id: number]: {
@@ -192,7 +199,7 @@ const IssuesList = ({ account, issues, issuesData: { data: issuesData, setData:
192199
})}
193200
</>
194201
))}
195-
{issues.length === 0 && <p className="text-center">No issues</p>}
202+
{rawIssues.length === 0 && <p className="text-center">No issues</p>}
196203
</>
197204
);
198205
};

src/pages/IssuesPage.tsx

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,16 +57,7 @@ const IssuesPage = () => {
5757
<div className="flex flex-col gap-y-2">
5858
{myIssuesQuery.isLoading && <IssuesListSkeleton />}
5959

60-
<IssuesList
61-
account={myIssuesQuery.account}
62-
issues={myIssuesQuery.data.sort((a, b) => {
63-
const favA = issuesData.data[a.id]?.pinned || issuesData.data[a.id]?.favorite;
64-
const favB = issuesData.data[b.id]?.pinned || issuesData.data[b.id]?.favorite;
65-
if (favA && favB) return new Date(a.updated_on).getTime() - new Date(a.updated_on).getTime();
66-
return favA ? -1 : 1;
67-
})}
68-
issuesData={issuesData}
69-
/>
60+
<IssuesList account={myIssuesQuery.account} issues={myIssuesQuery.data} issuesData={issuesData} />
7061

7162
{searching && settings.options.extendedSearch && (
7263
<>

0 commit comments

Comments
 (0)