Created
January 16, 2020 14:39
-
-
Save jsoneaday/0555a865922252afd52bf8e13bf5a634 to your computer and use it in GitHub Desktop.
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
import React, { useState } from "react"; | |
import { | |
IonContent, | |
IonGrid, | |
IonRow, | |
IonCol, | |
IonPage, | |
IonHeader, | |
IonToolbar, | |
IonTitle, | |
IonList, | |
IonLabel, | |
useIonViewWillEnter, | |
IonItemSliding, | |
IonItem, | |
IonItemOptions, | |
IonItemOption, | |
IonAvatar | |
} from "@ionic/react"; | |
import { useStorage } from "@ionic/react-hooks/storage"; | |
import { FilesystemDirectory, Capacitor } from "@capacitor/core"; | |
import { useFilesystem } from "@ionic/react-hooks/filesystem"; | |
export const LOG_PREFIX = "[Photos] "; | |
const Photos: React.FC = () => { | |
const [photoItems, setPhotoItems] = useState<JSX.Element[] | null>(null); | |
const { getUri } = useFilesystem(); | |
const { get } = useStorage(); | |
useIonViewWillEnter(async () => { | |
const imgPaths = await get("imagePaths"); | |
const images = imgPaths ? JSON.parse(imgPaths) : null; | |
console.log(LOG_PREFIX + "images", images); | |
if (images && images.length > 0) { | |
const photos: JSX.Element[] = []; | |
for await (let image of images) { | |
console.log(LOG_PREFIX + "checking if file exists", image.fileName); | |
const finalPhotoUri = await getUri({ | |
directory: FilesystemDirectory.Documents, | |
path: image.fileName | |
}); | |
console.log(LOG_PREFIX + "image.fileName", image.fileName); | |
console.log(LOG_PREFIX + "finalPhotoUri", finalPhotoUri); | |
const photoUrl = Capacitor.convertFileSrc(finalPhotoUri.uri); | |
console.log(LOG_PREFIX + "converted photoUrl", photoUrl); | |
photos.push( | |
<IonItemSliding key={image.fileName}> | |
<IonItem> | |
<IonAvatar slot="start"> | |
{photoUrl && <img src={photoUrl} alt="my pic" />} | |
</IonAvatar> | |
<IonLabel>{image.fileName}</IonLabel> | |
</IonItem> | |
<IonItemOptions side="end"> | |
<IonItemOption onClick={() => {}}>Delete</IonItemOption> | |
</IonItemOptions> | |
</IonItemSliding> | |
); | |
} | |
console.log(LOG_PREFIX + "setPhotoItems"); | |
setPhotoItems(photos); | |
} | |
}); | |
return ( | |
<IonPage> | |
<IonHeader> | |
<IonToolbar> | |
<IonTitle>Photos</IonTitle> | |
</IonToolbar> | |
</IonHeader> | |
<IonContent> | |
<IonGrid> | |
<IonRow> | |
<IonCol size-md="6" offset-md="3" className="ion-text-center"> | |
<IonList>{photoItems}</IonList> | |
</IonCol> | |
</IonRow> | |
</IonGrid> | |
</IonContent> | |
</IonPage> | |
); | |
}; | |
export default Photos; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment