-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #530 from TAMUSHPE/dev-web
hot fix for opening docs
- Loading branch information
Showing
2 changed files
with
74 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,28 +1,70 @@ | ||
'use client' | ||
import { useState } from "react"; | ||
import { getStorage, ref, getMetadata, getBlob } from "firebase/storage"; | ||
import { saveAs } from "file-saver"; | ||
import { RequestWithDoc } from "@/types/membership"; | ||
|
||
const storage = getStorage(); | ||
|
||
interface MemberCardProps{ | ||
request: RequestWithDoc, | ||
onApprove: (member: RequestWithDoc) => void, | ||
onDeny: (member: RequestWithDoc) => void, | ||
} | ||
const fetchAndFixFile = async (url: string) => { | ||
try { | ||
const fileRef = ref(storage, url); | ||
|
||
const metadata = await getMetadata(fileRef); | ||
|
||
if (metadata.contentType === "image/png" || metadata.contentType === "image/jpeg") { | ||
window.open(url, "_blank"); | ||
return; | ||
} | ||
|
||
let extension = ""; | ||
switch (metadata.contentType) { | ||
case "application/pdf": | ||
extension = ".pdf"; | ||
break; | ||
case "image/heic": | ||
extension = ".heic"; | ||
break; | ||
default: | ||
extension = ""; | ||
} | ||
|
||
const blob = await getBlob(fileRef); | ||
|
||
const MemberCard : React.FC<MemberCardProps> = ({request, onApprove, onDeny}) => { | ||
|
||
|
||
return( | ||
// flex text-gray-400 justify-evenly text-2xl | ||
<tr className="bg-gray-300"> | ||
<td className="bg-gray-500 px-4 py-2">{request.name}</td> | ||
<td className="px-4 py-2"><a href={request.chapterURL}>Chapter</a></td> | ||
<td className="px-4 py-2"><a href={request.nationalURL}>National</a></td> | ||
<td className="bg-green-400 px-4 py-2"><button onClick={() => {onApprove(request); }}>Approve</button></td> | ||
<td className="bg-red-400 px-4 py-2"><button onClick={() => {onDeny(request); }}>Deny</button></td> | ||
</tr> | ||
) | ||
//} | ||
|
||
const filename = `verification${extension}`; | ||
|
||
saveAs(blob, filename); | ||
} catch (error) { | ||
console.error("Error fetching or fixing the file:", error); | ||
} | ||
}; | ||
|
||
interface MemberCardProps { | ||
request: RequestWithDoc; | ||
onApprove: (member: RequestWithDoc) => void; | ||
onDeny: (member: RequestWithDoc) => void; | ||
} | ||
export default MemberCard; | ||
|
||
const MemberCard: React.FC<MemberCardProps> = ({ request, onApprove, onDeny }) => { | ||
return ( | ||
<tr className="bg-gray-300"> | ||
<td className="bg-gray-500 px-4 py-2">{request.name}</td> | ||
<td className="px-4 py-2"> | ||
<button onClick={() => fetchAndFixFile(request.chapterURL)}> | ||
Chapter | ||
</button> | ||
</td> | ||
<td className="px-4 py-2"> | ||
<button onClick={() => fetchAndFixFile(request.nationalURL)}> | ||
National | ||
</button> | ||
</td> | ||
<td className="bg-green-400 px-4 py-2"> | ||
<button onClick={() => onApprove(request)}>Approve</button> | ||
</td> | ||
<td className="bg-red-400 px-4 py-2"> | ||
<button onClick={() => onDeny(request)}>Deny</button> | ||
</td> | ||
</tr> | ||
); | ||
}; | ||
|
||
export default MemberCard; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
[ | ||
{ | ||
"origin": ["http://localhost:3000", "https://tamu-shpe-admin-web.vercel.app"], | ||
"method": ["GET"], | ||
"maxAgeSeconds": 3600, | ||
"responseHeader": ["Content-Type"] | ||
} | ||
] | ||
|