1- import { useState } from "react" ;
1+ import { useState , } from "react" ;
22import { Email } from "../types" ;
33import BrokenLinksChecker from "./BrokenLinksChecker" ;
44import SpamAssassin from "./SpamAssassin" ;
55import { open } from "@tauri-apps/api/shell" ;
66import GoogleChrome from "./icons/GoogleChrome" ;
77import Firefox from "./icons/Firefox" ;
8- import { cacheDir } from "@tauri-apps/api/path"
9- import { writeTextFile , createDir , readDir } from "@tauri-apps/api/fs" ;
10- import { BaseDirectory } from "@tauri-apps/api/fs"
118import HtmlPreview from "./HtmlPreview" ;
9+ import { ensureEmailFileIsWritten } from "../utils/utils" ;
1210
13- async function ensureEmailFileIsWritten ( email : Email ) : Promise < string > {
14- const fileName = `${ email . id } .html` ;
15- const cacheDirPath = await cacheDir ( ) ;
16- const appCacheDir = `${ cacheDirPath } /BladeMail` ;
17-
18- try {
19- await createDir ( "BladeMail" , {
20- dir : BaseDirectory . Cache
21- } ) ;
22- } catch ( e ) { }
23-
24- try {
25- const result = await writeTextFile ( `BladeMail/${ fileName } ` , email . html , {
26- dir : BaseDirectory . Cache
27- } ) ;
28-
29- console . log ( result )
30- } catch ( e ) {
31- }
32-
33- return appCacheDir + "/" + fileName ;
34- }
3511
3612export default function EmailBodyTabs ( { email } : { email : Email } ) {
3713 const tabs = [ "html" , "html source" , "text" , "raw" , 'links checker' , 'Spam Assassin' ] ;
3814 const [ activeTab , setActiveTab ] = useState ( "html" ) ;
15+ const [ spamScore , setSpamScore ] = useState < number > ( 0 ) ;
3916
4017 async function openInBrowser ( browserName : 'google chrome' | 'firefox' ) {
4118 // ensure html file is write to temp folder
4219 const filePath = await ensureEmailFileIsWritten ( email ) ;
4320
44- console . log ( filePath )
4521 if ( filePath ) {
4622 open ( filePath , browserName )
4723 }
@@ -58,13 +34,13 @@ export default function EmailBodyTabs({ email }: { email: Email }) {
5834 onClick = { ( ) => setActiveTab ( tab ) }
5935 >
6036 { tab . toUpperCase ( ) }
37+ { tab === "Spam Assassin" && < span className = "bg-white text-gray-500 px-1 ml-0.5 rounded" > { spamScore } </ span > }
6138 </ li >
6239 ) ) }
6340 </ ul >
6441 </ div >
6542 < div className = "h-full w-full overflow-auto p-5" >
6643 < div className = "h-full w-full rounded-xl bg-white text-sm" >
67-
6844 { /* html preview tab */ }
6945 < div className = { `relative h-full w-full ${ activeTab === "html" ? "flex" : "hidden" } ` } >
7046 < HtmlPreview html = { email . html } />
@@ -108,7 +84,7 @@ export default function EmailBodyTabs({ email }: { email: Email }) {
10884
10985 { /* spam assassin tab */ }
11086 < div className = { activeTab === "Spam Assassin" ? "block" : "hidden" } >
111- < SpamAssassin email = { email } />
87+ < SpamAssassin email = { email } setSpamScore = { setSpamScore } />
11288 </ div >
11389 </ div >
11490 </ div >
0 commit comments