Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions src/components/islands/word-editor.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -83,16 +83,16 @@ export function TogglePreview() {
const togglePreview = useStore($togglePreview);

return (
<label class="inline-flex lg:hidden items-center cursor-pointer border-r pr-2.5 mr-2.5">
<span class="me-3 text-sm font-medium text-gray-900 dark:text-gray-300">
<label className="inline-flex lg:hidden items-center cursor-pointer border-r pr-2.5 mr-2.5">
<span className="me-3 text-sm font-medium text-gray-900 dark:text-gray-300">
Preview
</span>
<input
type="checkbox"
class="sr-only peer"
className="sr-only peer"
onChange={() => $togglePreview.set(!togglePreview)}
/>
<div class="relative w-8 h-5 bg-gray-400 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-[75%] rtl:peer-checked:after:-translate-x-[75%] peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all dark:border-gray-600 peer-checked:bg-black"></div>
<div className="relative w-8 h-5 bg-gray-400 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-[75%] rtl:peer-checked:after:-translate-x-[75%] peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all dark:border-gray-600 peer-checked:bg-black"></div>
</label>
);
}
Expand Down Expand Up @@ -136,7 +136,10 @@ function Editor({ eTitle, eContent, eMetadata, className, action, ...props }) {
*/
const data = await response.json();
$isWordSubmitLoading.set(false);
if (data.message === "Reference already exists") {
if (
response.status === 422 &&
data.message.includes("Reference already exists")
) {
if (
confirm(
"It appears you have an existing reference for the current word, do you wish to clear that reference?",
Expand Down
32 changes: 21 additions & 11 deletions src/lib/branch.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@ export async function createBranch(userOctokit, repoDetails, newBranchName) {

return response.data;
} catch (error) {
throw error;
throw new Error("Error occurred while creating new branch", {
cause: error,
});
}
}

Expand All @@ -45,16 +47,22 @@ export async function getBranch(userOctokit, repoFullname, ref) {
const formattedRef =
ref.split("/")[0] === "refs" ? ref.split("/").slice(1).join("/") : ref;

const response = await userOctokit.request(
"GET /repos/{owner}/{repo}/git/ref/{ref}",
{
owner: repoOwner,
repo: repoName,
ref: formattedRef,
},
);
try {
const response = await userOctokit.request(
"GET /repos/{owner}/{repo}/git/ref/{ref}",
{
owner: repoOwner,
repo: repoName,
ref: formattedRef,
},
);

return response.data;
return response.data;
} catch (error) {
throw new Error(`Error occurred while getting branch ${ref}`, {
cause: error,
});
}
}

/**
Expand All @@ -79,6 +87,8 @@ export async function deleteBranch(userOctokit, repoFullname, branchName) {

return response.status;
} catch (error) {
throw error;
throw new Error("Error occurred while deleting branch", {
cause: error,
});
}
}
48 changes: 29 additions & 19 deletions src/lib/fork.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,9 @@ export async function forkRepository(userOctokit, projectRepoDetails) {

return response.data.full_name;
} catch (error) {
console.log("Error occurred while forking repository:", error);
throw new Error("Error occurred while forking repository", {
cause: error,
});
}
}

Expand Down Expand Up @@ -101,23 +103,29 @@ async function isRepositoryForkUpdated(
) {
const { repoFullname, repoMainBranchRef } = projectRepoDetails;

// `repoMainBranchRef` because the forked repo's main should be compared again project's same main repo
const forkedRepoMainBranch = await getBranch(
userOctokit,
forkedRepoFullname,
repoMainBranchRef,
);
const projectRepoMainBranch = await getBranch(
userOctokit,
repoFullname,
repoMainBranchRef,
);

return {
isUpdated:
forkedRepoMainBranch.object.sha === projectRepoMainBranch.object.sha,
updateSHA: projectRepoMainBranch.object.sha,
};
try {
// `repoMainBranchRef` because the forked repo's main should be compared again project's same main repo
const forkedRepoMainBranch = await getBranch(
userOctokit,
forkedRepoFullname,
repoMainBranchRef,
);
const projectRepoMainBranch = await getBranch(
userOctokit,
repoFullname,
repoMainBranchRef,
);

return {
isUpdated:
forkedRepoMainBranch.object.sha === projectRepoMainBranch.object.sha,
updateSHA: projectRepoMainBranch.object.sha,
};
} catch (error) {
throw new Error("Error occurred while checking fork update status", {
cause: error,
});
}
}

/**
Expand Down Expand Up @@ -171,6 +179,8 @@ async function isRepositoryForked(userOctokit, repoFullname, userLogin) {
? matchingFork.owner.login + "/" + matchingFork.name
: null;
} catch (error) {
console.log("Error occurred while checking repo fork: ", error);
throw new Error("Error occurred while checking repo fork", {
cause: error,
});
}
}
58 changes: 32 additions & 26 deletions src/lib/submit-word.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,32 +47,38 @@ export async function submitWord(
.replace("$word_title", word.title)
.replace("$word_content", word.content);

const response = await userOctokit.request(
"POST /repos/{owner}/{repo}/pulls",
{
owner: repoOwner,
repo: repoName,
head: `${forkedRepoOwner}:${headBranch}`,
base: baseBranch,
title,
body,
maintainers_can_modify: true,
},
);
try {
const response = await userOctokit.request(
"POST /repos/{owner}/{repo}/pulls",
{
owner: repoOwner,
repo: repoName,
head: `${forkedRepoOwner}:${headBranch}`,
base: baseBranch,
title,
body,
maintainers_can_modify: true,
},
);

// jargons-dev (bot) App adds related labels to PR
await jargonsdevOctokit.request(
"POST /repos/{owner}/{repo}/issues/{issue_number}/labels",
{
owner: repoOwner,
repo: repoName,
issue_number: response.data.number,
labels: [
action === "new" ? LABELS.NEW_WORD : LABELS.EDIT_WORD,
LABELS.VIA_EDITOR,
],
},
);
// jargons-dev (bot) App adds related labels to PR
await jargonsdevOctokit.request(
"POST /repos/{owner}/{repo}/issues/{issue_number}/labels",
{
owner: repoOwner,
repo: repoName,
issue_number: response.data.number,
labels: [
action === "new" ? LABELS.NEW_WORD : LABELS.EDIT_WORD,
LABELS.VIA_EDITOR,
],
},
);

return response.data;
return response.data;
} catch (error) {
throw new Error(`Error occurred while submitting word "${word.title}"`, {
cause: error,
});
}
}
12 changes: 6 additions & 6 deletions src/lib/word-editor.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ export async function writeNewWord(

return response.data;
} catch (error) {
throw new Error(`error committing new word ${title} to dictionary`, {
cause: error.message,
throw new Error(`Error committing new word ${title} to dictionary`, {
cause: error,
});
}
}
Expand Down Expand Up @@ -71,8 +71,8 @@ export async function updateExistingWord(

return response.data;
} catch (error) {
throw new Error(`error committing edit to "${title}"`, {
cause: error.message,
throw new Error(`Error committing edit to "${title}"`, {
cause: error,
});
}
}
Expand Down Expand Up @@ -107,8 +107,8 @@ export async function getExistingWord(userOctokit, repoDetails, wordTitle) {
...responseData,
};
} catch (error) {
throw new Error(`error getting "${wordTitle}" from dictionary`, {
cause: error.message,
throw new Error(`Error getting "${wordTitle}" from dictionary`, {
cause: error,
});
}
}
Expand Down
48 changes: 22 additions & 26 deletions src/pages/api/dictionary.js
Original file line number Diff line number Diff line change
Expand Up @@ -117,16 +117,15 @@ export async function POST({ request, cookies }) {
},
});
} catch (error) {
console.log(error);
return new Response(
JSON.stringify({ message: error.response.data.message }),
{
status: error.response.status,
headers: {
"Content-type": "application/json",
},
console.log(error.cause);
const message = error.cause?.message ?? "An unexpected error occurred";
const status = error.cause?.status ?? 500;
return new Response(JSON.stringify({ message }), {
status,
headers: {
"Content-type": "application/json",
},
);
});
}
}

Expand All @@ -136,7 +135,7 @@ export async function POST({ request, cookies }) {
*/
export async function DELETE({ request, cookies }) {
const data = await request.formData();
const accessToken = cookies.get("jargons.dev:token", {
const accessToken = cookies.get("jargonsdevToken", {
decode: (value) => decrypt(value),
});

Expand Down Expand Up @@ -171,24 +170,21 @@ export async function DELETE({ request, cookies }) {
try {
await deleteBranch(userOctokit, fork, generateBranchName(action, title));

return new Response(
JSON.stringify({ message: "reference deleted successfully" }),
{
status: 204,
headers: {
"Content-type": "application/json",
},
return new Response(null, {
status: 204,
headers: {
"Content-type": "application/json",
},
);
});
} catch (error) {
return new Response(
JSON.stringify({ message: error.response.data.message }),
{
status: error.response.status,
headers: {
"Content-type": "application/json",
},
const message =
error.cause?.message ?? error.message ?? "An error occurred";
const status = error.cause?.status ?? 500;
return new Response(JSON.stringify({ message }), {
status,
headers: {
"Content-type": "application/json",
},
);
});
}
}