mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-26 07:38:33 -06:00
workign on file upload
This commit is contained in:
8552
package-lock.json
generated
8552
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -18,6 +18,7 @@ export default function AssignmentPreview({
|
|||||||
(sum, cur) => (rubricItemIsExtraCredit(cur) ? sum + cur.points : sum),
|
(sum, cur) => (rubricItemIsExtraCredit(cur) ? sum + cur.points : sum),
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
|
const htmlPreview = markdownToHTMLSafe(assignment.description, settings);
|
||||||
return (
|
return (
|
||||||
<div className="h-full overflow-y-auto">
|
<div className="h-full overflow-y-auto">
|
||||||
<section>
|
<section>
|
||||||
@@ -61,7 +62,7 @@ export default function AssignmentPreview({
|
|||||||
<div
|
<div
|
||||||
className="markdownPreview"
|
className="markdownPreview"
|
||||||
dangerouslySetInnerHTML={{
|
dangerouslySetInnerHTML={{
|
||||||
__html: markdownToHTMLSafe(assignment.description, settings),
|
__html: htmlPreview,
|
||||||
}}
|
}}
|
||||||
></div>
|
></div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -83,21 +83,6 @@ export default function EditAssignment({
|
|||||||
previousAssignmentName: assignmentName,
|
previousAssignmentName: assignmentName,
|
||||||
courseName,
|
courseName,
|
||||||
});
|
});
|
||||||
// .then(async () => {
|
|
||||||
// // await new Promise(resolve => setTimeout(resolve, 1000));
|
|
||||||
|
|
||||||
// if (updatedAssignment.name !== assignmentName)
|
|
||||||
// router.replace(
|
|
||||||
// getModuleItemUrl(
|
|
||||||
// courseName,
|
|
||||||
// moduleName,
|
|
||||||
// "assignment",
|
|
||||||
// updatedAssignment.name
|
|
||||||
// ), {
|
|
||||||
|
|
||||||
// }
|
|
||||||
// );
|
|
||||||
// });
|
|
||||||
} else {
|
} else {
|
||||||
console.log(
|
console.log(
|
||||||
"client not authoritative, updating client with server assignment",
|
"client not authoritative, updating client with server assignment",
|
||||||
|
|||||||
@@ -9,7 +9,8 @@ import {
|
|||||||
extractImageSources,
|
extractImageSources,
|
||||||
markdownToHtmlNoImages,
|
markdownToHtmlNoImages,
|
||||||
} from "@/services/htmlMarkdownUtils";
|
} from "@/services/htmlMarkdownUtils";
|
||||||
import { useActionState, useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
|
import { useMutation } from "@tanstack/react-query";
|
||||||
|
|
||||||
export const useAssignmentQuery = (
|
export const useAssignmentQuery = (
|
||||||
moduleName: string,
|
moduleName: string,
|
||||||
@@ -32,12 +33,9 @@ export const useUpdateImageSettingsForAssignment = ({
|
|||||||
moduleName: string;
|
moduleName: string;
|
||||||
assignmentName: string;
|
assignmentName: string;
|
||||||
}) => {
|
}) => {
|
||||||
const [settings] = useLocalCourseSettingsQuery();
|
|
||||||
const [assignment] = useAssignmentQuery(moduleName, assignmentName);
|
const [assignment] = useAssignmentQuery(moduleName, assignmentName);
|
||||||
const updateSettings = useUpdateLocalCourseSettingsMutation();
|
|
||||||
const [isPending, setIsPending] = useState(false);
|
const [isPending, setIsPending] = useState(false);
|
||||||
const createCanvasUrlMutation =
|
const addNewImagesToCanvasMutation = useAddNewImagesToCanvasMutation();
|
||||||
trpc.canvasFile.getCanvasFileUrl.useMutation();
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!enable_images) {
|
if (!enable_images) {
|
||||||
@@ -52,17 +50,38 @@ export const useUpdateImageSettingsForAssignment = ({
|
|||||||
setIsPending(true);
|
setIsPending(true);
|
||||||
const assignmentMarkdown = markdownToHtmlNoImages(assignment.description);
|
const assignmentMarkdown = markdownToHtmlNoImages(assignment.description);
|
||||||
|
|
||||||
const imageSources = extractImageSources(assignmentMarkdown);
|
addNewImagesToCanvasMutation
|
||||||
const imagesToUpdate = imageSources.filter((source) =>
|
.mutateAsync({
|
||||||
settings.assets.every((a) => a.sourceUrl !== source)
|
markdownString: assignmentMarkdown,
|
||||||
);
|
})
|
||||||
|
.then(() => setIsPending(false));
|
||||||
|
// not sure why mutation reference changes...
|
||||||
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
}, [assignment.description, isPending]);
|
||||||
|
return { isPending };
|
||||||
|
};
|
||||||
|
|
||||||
if (imagesToUpdate.length) {
|
export const useAddNewImagesToCanvasMutation = () => {
|
||||||
Promise.all(
|
const [settings] = useLocalCourseSettingsQuery();
|
||||||
imagesToUpdate.map(async (source) => {
|
const createCanvasUrlMutation =
|
||||||
// todo: get canvas url
|
trpc.canvasFile.getCanvasFileUrl.useMutation();
|
||||||
// const canvasUrl = "";
|
const updateSettings = useUpdateLocalCourseSettingsMutation();
|
||||||
console.log(source);
|
|
||||||
|
return useMutation({
|
||||||
|
mutationFn: async ({ markdownString }: { markdownString: string }) => {
|
||||||
|
const imageSources = extractImageSources(markdownString);
|
||||||
|
const newImages = imageSources.filter((source) =>
|
||||||
|
settings.assets.every((a) => a.sourceUrl !== source)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (newImages.length === 0) {
|
||||||
|
console.log("no new images to upload");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const newAssets = await Promise.all(
|
||||||
|
newImages.map(async (source) => {
|
||||||
|
console.log("uploading image to canvas", source);
|
||||||
const canvasUrl = await createCanvasUrlMutation.mutateAsync({
|
const canvasUrl = await createCanvasUrlMutation.mutateAsync({
|
||||||
sourceUrl: source,
|
sourceUrl: source,
|
||||||
canvasCourseId: settings.canvasId,
|
canvasCourseId: settings.canvasId,
|
||||||
@@ -70,27 +89,15 @@ export const useUpdateImageSettingsForAssignment = ({
|
|||||||
console.log("got canvas url", source, canvasUrl);
|
console.log("got canvas url", source, canvasUrl);
|
||||||
return { sourceUrl: source, canvasUrl };
|
return { sourceUrl: source, canvasUrl };
|
||||||
})
|
})
|
||||||
).then(async (newAssets) => {
|
);
|
||||||
await updateSettings.mutateAsync({
|
await updateSettings.mutateAsync({
|
||||||
settings: {
|
settings: {
|
||||||
...settings,
|
...settings,
|
||||||
assets: [...settings.assets, ...newAssets],
|
assets: [...settings.assets, ...newAssets],
|
||||||
},
|
},
|
||||||
});
|
|
||||||
setIsPending(false);
|
|
||||||
});
|
});
|
||||||
} else {
|
},
|
||||||
setIsPending(false)
|
});
|
||||||
}
|
|
||||||
}, [
|
|
||||||
assignment.description,
|
|
||||||
createCanvasUrlMutation,
|
|
||||||
isPending,
|
|
||||||
settings,
|
|
||||||
settings.assets,
|
|
||||||
updateSettings,
|
|
||||||
]);
|
|
||||||
return { isPending };
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export const useAssignmentNamesQuery = (moduleName: string) => {
|
export const useAssignmentNamesQuery = (moduleName: string) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user