creating link successfully

This commit is contained in:
Arjun Patel
2022-01-18 18:17:50 -08:00
parent bbe2e5a7cd
commit 1e3f4d6041
5 changed files with 49 additions and 17 deletions
+5 -2
View File
@@ -1,5 +1,5 @@
import { FaArchive, FaExternalLinkAlt, FaFilePdf } from "react-icons/fa";
import Link from "../models/link";
import Link, { LinkType } from "../models/link";
import Image from "next/image";
import { BsThreeDots } from "react-icons/bs";
import LinkIcon from "./LinkIcon";
@@ -9,7 +9,10 @@ export default function LinkCard(props: { link?: Link }) {
<span className="flex flex-col rounded-lg">
{/* attmnt header */}
<span className="flex flex-row bg-gray-300 bg-opacity-25 py-5 px-3 items-center justify-start">
<LinkIcon className="text-4xl text-orange-300 mr-2" />
<LinkIcon
className="text-4xl text-orange-300 mr-2"
linkType={LinkType.googleDrive}
/>
<span className="flex flex-col items-baseline mr-10 space-y-1">
<span className="text-md font-bold text-white">report.pdf</span>
+29 -2
View File
@@ -11,8 +11,11 @@ import {
} from "../../contexts/keyboardContext";
import { useTeamDashboardContext } from "../../contexts/teamDashboardContext";
import Link, { LinkType } from "../../models/link";
import { SendService } from "../../services/sendService";
import LinkIcon from "../LinkIcon";
const sendService = new SendService();
export default function CreateOrUpdateLink() {
const { currUser } = useAuth();
const { handleModalType, showModalType } = useKeyboardContext();
@@ -41,12 +44,22 @@ export default function CreateOrUpdateLink() {
}
}
function handleSubmitLink() {
async function handleSubmitLink() {
if (!link || !name) {
toast.error("Please add a valid link and name");
return;
}
if (
!isTeamLink &&
(!recipientsSelected || recipientsSelected.length == 0)
) {
toast.error(
"Please select members or send it to the team with the toggle"
);
return;
}
// if it's a team link, make sure recipients is null ... but the model should handle this for us?
try {
@@ -59,15 +72,29 @@ export default function CreateOrUpdateLink() {
currUser.uid
);
console.log(newLink);
handleModalType(ShowModalType.na);
// send to database
await sendService.sendLink(newLink);
resetForm();
toast.success("link sent");
} catch (error) {
toast.error("Something went wrong in sending the link.");
console.log(error);
}
}
function resetForm() {
setLink("");
setName("");
setDescription("");
setShowMoreDetails(false);
setIsTeamLink(true);
setRecipientsSelected([]);
}
const [link, setLink] = useState<string>("");
const [name, setName] = useState<string>("");
const [description, setDescription] = useState<string>("");
+6 -12
View File
@@ -11,7 +11,7 @@ export default class Link {
teamId: string;
// if it's not a teamAttachment, then have a list of members who it's for
private _recipients: string[]; // userIds
recipients: string[]; // userIds
createdByUserId: string;
createdDate: Timestamp;
@@ -31,19 +31,13 @@ export default class Link {
this.recipients = recipientsArr;
this.createdByUserId = _createdByUserId;
this.type = Link.getLinkType(_link);
}
public get recipients(): string[] {
return this._recipients;
}
public set recipients(arrUserIds: string[]) {
if (!this._recipients || this._recipients?.length == 0) {
this._recipients = null;
if (!recipientsArr || recipientsArr?.length == 0) {
this.recipients = null;
} else {
this._recipients = arrUserIds;
this.recipients = recipientsArr;
}
this.type = Link.getLinkType(_link);
}
static getLinkType(url: string): LinkType {
+1 -1
View File
@@ -7,5 +7,5 @@ export enum Collections {
rooms = "rooms",
announcements = "announcements",
attachments = "attachments",
links = "links",
}
+8
View File
@@ -5,6 +5,7 @@ import {
getFirestore,
serverTimestamp,
} from "firebase/firestore";
import Link from "../models/link";
import { Message } from "../models/message";
import { Collections } from "./collections";
@@ -23,4 +24,11 @@ export class SendService {
}
);
}
async sendLink(link: Link) {
await addDoc(collection(this.db, Collections.links), {
...link,
createdDate: serverTimestamp(),
});
}
}