UNPKG

@react-native-ohos/camera-roll

Version:
80 lines (72 loc) 2.65 kB
/** * MIT License * * Copyright (C) 2025 Huawei Device Co., Ltd. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ import {useRef, useState} from 'react'; import type { GetPhotosParams, PhotoIdentifiersPage, SaveToCameraRollOptions, } from './CameraRoll'; import {CameraRoll} from './CameraRoll'; const initialState: PhotoIdentifiersPage = { edges: [], page_info: { end_cursor: '', has_next_page: false, start_cursor: '', }, }; const defaultConfig: GetPhotosParams = { first: 20, groupTypes: 'All', }; type UseCameraRollResult = [ PhotoIdentifiersPage, (config?: GetPhotosParams) => Promise<void>, (tag: string, options?: SaveToCameraRollOptions) => Promise<void>, ]; export function useCameraRoll(): UseCameraRollResult { const [photos, setPhotos] = useState<PhotoIdentifiersPage>(initialState); const getPhotos = useRef( async (config: GetPhotosParams = defaultConfig): Promise<void> => { try { const result = await CameraRoll.getPhotos(config); setPhotos(result); } catch (error) { if (__DEV__) console.log('[useCameraRoll] Error getting photos: ', error); } }, ).current; const save = useRef( async (...args: Parameters<typeof CameraRoll.saveAsset>): Promise<void> => { try { await CameraRoll.saveAsset(...args); } catch (error) { if (__DEV__) console.log('[useCameraRoll] Error saving to camera roll: ', error); } }, ).current; return [photos, getPhotos, save]; }