From bfc759f7ea0b007536abb1d3a2e7f405eb2a08e5 Mon Sep 17 00:00:00 2001
From: Jake Turner
Date: Mon, 12 Aug 2024 16:14:01 -0700
Subject: [PATCH] feat(Projects): advanced source material license info
---
.../src/components/FilesManager/EditFile.tsx | 6 +-
.../projects/ProjectPropertiesModal.tsx | 118 +++++++++++++-----
.../src/components/projects/ProjectView.jsx | 14 +--
client/src/components/util/ProjectHelpers.ts | 5 +-
client/src/screens/commons/Book/index.tsx | 4 +-
client/src/types/LicenseReport.ts | 13 +-
client/src/types/Misc.ts | 9 ++
client/src/types/Project.ts | 17 +--
client/src/types/index.ts | 8 +-
server/api/harvestingrequests.js | 2 +-
server/api/projects.js | 37 +++++-
server/models/project.ts | 20 +--
server/models/projectfile.ts | 12 +-
server/types/Misc.ts | 9 ++
server/types/index.ts | 3 +-
15 files changed, 184 insertions(+), 93 deletions(-)
diff --git a/client/src/components/FilesManager/EditFile.tsx b/client/src/components/FilesManager/EditFile.tsx
index 5bffbfc8..08fad8d9 100644
--- a/client/src/components/FilesManager/EditFile.tsx
+++ b/client/src/components/FilesManager/EditFile.tsx
@@ -17,6 +17,7 @@ import {
AssetTagFramework,
Author,
CentralIdentityLicense,
+ License,
ProjectFile,
} from "../../types";
import CtlTextInput from "../ControlledInputs/CtlTextInput";
@@ -44,7 +45,6 @@ import AuthorsForm from "./AuthorsForm";
import FilePreview from "./FilePreview";
import ManageCaptionsModal from "./ManageCaptionsModal";
import { useQuery } from "@tanstack/react-query";
-import { ProjectFileLicense } from "../../types/Project";
const FilesUploader = React.lazy(() => import("./FilesUploader"));
const FileRenderer = React.lazy(() => import("./FileRenderer"));
@@ -143,7 +143,7 @@ const EditFile: React.FC = ({
const {
data: projectLicenseSettings,
isFetching: projectLicenseSettingsLoading,
- } = useQuery({
+ } = useQuery({
queryKey: ["projectLicenseSettings", projectID],
queryFn: loadProjectLicenseSettings,
staleTime: Infinity,
@@ -265,7 +265,7 @@ const EditFile: React.FC = ({
res.data.project.defaultFileLicense &&
typeof res.data.project.defaultFileLicense === "object"
) {
- return res.data.project.defaultFileLicense as ProjectFileLicense;
+ return res.data.project.defaultFileLicense as License
}
return null;
} catch (err) {
diff --git a/client/src/components/projects/ProjectPropertiesModal.tsx b/client/src/components/projects/ProjectPropertiesModal.tsx
index 5fcfb4a6..dc56b533 100644
--- a/client/src/components/projects/ProjectPropertiesModal.tsx
+++ b/client/src/components/projects/ProjectPropertiesModal.tsx
@@ -91,8 +91,14 @@ const ProjectPropertiesModal: React.FC = ({
adaptURL: "",
author: "",
authorEmail: "",
- license: "",
- resourceURL: "",
+ license: {
+ name: "",
+ version: "",
+ url: "",
+ sourceURL: "",
+ modifiedFromSource: false,
+ additionalTerms: "",
+ },
notes: "",
associatedOrgs: [],
thumbnail: "",
@@ -204,7 +210,15 @@ const ProjectPropertiesModal: React.FC = ({
}, [watch("defaultFileLicense.name")]);
// Return new license version options when license name changes
- const selectedLicenseVersions = useCallback(() => {
+ const selectedSourceLicenseVersions = useCallback(() => {
+ const license = licenseOptions.find(
+ (l) => l.name === getValues("license.name")
+ );
+ if (!license) return [];
+ return license.versions ?? [];
+ }, [watch("license.name"), licenseOptions]);
+
+ const selectedFileLicenseVersions = useCallback(() => {
const license = licenseOptions.find(
(l) => l.name === getValues("defaultFileLicense.name")
);
@@ -1095,7 +1109,7 @@ const ProjectPropertiesModal: React.FC = ({
or tool.
-
+
= ({
className="basis-1/2"
/>
-
-
-