Skip to content

Commit 744c9b9

Browse files
refactor: use asPaper instead of isProjectPaper
This removes the duplicated condititions to get the actual paper object.
1 parent e9cc3a7 commit 744c9b9

File tree

3 files changed

+15
-13
lines changed

3 files changed

+15
-13
lines changed

src/lib/components/composites/paper-components/PaperListEntry.svelte

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<script lang="ts">
22
import PaperInfo from "$lib/components/composites/paper-components/PaperInfo.svelte";
3-
import { isProjectPaper, type PaperListEntryInterface } from "$lib/model/general";
3+
import { asPaper, type PaperListEntryInterface } from "$lib/model/general";
44
import UserAvatar from "$lib/components/composites/user-avatar/UserAvatar.svelte";
55
import { goto } from "$app/navigation";
66
import { PaperDecision } from "$lib/model/api/project";
@@ -12,7 +12,7 @@
1212
};
1313
1414
const navigateToPaperView = () => {
15-
const paperId = isProjectPaper(paper) ? paper.paper!.id : paper.id;
15+
const paperId = asPaper(paper).id;
1616
const paperLink =
1717
projectId !== undefined
1818
? `/project/${projectId}/paper/${paperId}`
@@ -107,7 +107,7 @@ Usage:
107107
? `border-l-4 ${getReviewDecisionColor(paper.decision, paper.reviews.length)}`
108108
: ''} rounded-md px-3 py-1.5"
109109
>
110-
<PaperInfo loadingPaper={Promise.resolve(isProjectPaper(paper) ? paper.paper! : paper)} />
110+
<PaperInfo loadingPaper={Promise.resolve(asPaper(paper))} />
111111
</div>
112112
{#if showReviewStatus}
113113
{#each paper.reviews as review}

src/lib/components/composites/paper-components/paper-view/PaperView.svelte

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import type { User } from "$lib/model/api/user";
1212
import type { Paper } from "$lib/model/api/paper";
1313
import type { Project_Paper } from "$lib/model/api/project";
14-
import { isProjectPaper } from "$lib/model/general";
14+
import { asPaper } from "$lib/model/general";
1515
import type { ReferencesAndCitationsCardContentProps } from "./cards/ReferencesAndCitationsCardContent.svelte";
1616
1717
type Props = ReferencesAndCitationsCardContentProps & {
@@ -39,9 +39,7 @@
3939
startInEditMode = false,
4040
}: Props = $props();
4141
42-
let loadingPaper = initialLoadingPaper.then((paper) =>
43-
isProjectPaper(paper) ? paper!.paper! : paper,
44-
);
42+
let loadingPaper = initialLoadingPaper.then(asPaper);
4543
let loadingPaperId = loadingPaper.then((paper) => paper.id);
4644
</script>
4745

src/lib/model/general.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import type {
2-
Project,
3-
Project_Member_List,
1+
import {
42
Project_Paper,
5-
Project_Statistics,
3+
type Project,
4+
type Project_Member_List,
5+
type Project_Statistics,
66
} from "$lib/model/api/project";
7-
import type { Paper } from "./api/paper";
7+
import type { Paper } from "$lib/model/api/paper";
88

99
type ValidationResult = { success: true } | { success: false; error: string };
1010

@@ -35,5 +35,9 @@ function isProjectPaper(paper: Project_Paper | Paper): paper is Project_Paper {
3535
return "paper" in paper;
3636
}
3737

38+
function asPaper(paper: Project_Paper | Paper): Paper {
39+
return isProjectPaper(paper) ? paper.paper! : paper;
40+
}
41+
3842
export type { ValidationResult, ApiError, ProjectListEntryInterface, PaperListEntryInterface };
39-
export { isProjectPaper };
43+
export { isProjectPaper, asPaper };

0 commit comments

Comments
 (0)