IRCRehberi.Net- Türkiyenin En iyi IRC ve Genel Forum Sitesi  
 sohbet
Sohbet chat


Programlama C , C# , C++ , Java , Python , Php , Javascript , Matlab Örnekleri

4Beğeni(ler)
  • 1 Post By SuLh
  • 1 Post By Gururum
  • 1 Post By YiLDiZ
  • 1 Post By oMeN


 
 
Seçenekler Stil
Alt 09 Ağustos 2024, 15:40   #1
Standart React Native / Expo Asset Downloader

React Native Expo için uygulama açılışında asset indirme sistemi yapmıştım kendim için daha önce.

Kod

import * as FileSystem from 'expo-file-system';
export class AssetsDownloader 
{

    /**
     * expo construactor
     * @param {*} u -> url
     * @param {*} n -> name
     */
    downloadResumable = (u, n) => {
        return FileSystem.createDownloadResumable(
            u,
            this.dir + n,
            {},
            this.callback
          );
    } 

    /**
     * 
     * @param {*} downloadProgress -> from downloadResumable
     */
    callback = downloadProgress => {
        const progress = downloadProgress.totalBytesWritten / downloadProgress.totalBytesExpectedToWrite;
        return progress;
    }

    /**
     * 
     * @param {*} fn -> Function that fetch the asset list
     */
    constructor(fn) {
        this.fn = fn;
        this.assets = [];
        this.dir = FileSystem.documentDirectory + "assets/";
    }
    /**
     * 
     * @param {*} k -> Key name // ex: data.image (key: image)
     *  @param {*} b -> BASE_API_URL
     */
    getFiles = async(k, b) => {
        let res = await this.fn();
        if (res.data?.length == 0 || res.data == undefined) this.assets = [];
        const { data } = res;
        data.forEach((item) => {
            this.assets.push({
                url: item[k] != null ? `${b}${item[k]}`: null,
                name: item[k]
            });
        })
        return this.assets;
    }
  
    
    downloadAssets = async(assets) => {
        let dir = await FileSystem.getInfoAsync(this.dir);
        if (!dir.exists) await FileSystem.makeDirectoryAsync(this.dir, { intermediates: true });
        assets.forEach(async(item) => {
            var info = await FileSystem.getInfoAsync(this.dir + item.name)
            if (info.exists) return console.log(`Assets ${item.name} already downloaded!`)
            this.downloadResumable(item.url, item.name).downloadAsync().then(({ uri }) => {
                console.log(`Assets ${item.name} downloaded!`)
            })
        })
    }

}
Kullanımı:

Kod

let url = "https://blabla.com/api/getImages/";
const getImages = async() => {
    let res = await axios.get(url);
}

const assetDownloader = new AssetsDownloader(getImages);
assetDownloader.getFiles("name", url).then((res) => {
  var filteredAssets = res.filter(x => x.name != null);
  assetDownloader.downloadAssets(filteredAssets);
})
 
Alt 13 Ağustos 2024, 10:59   #2
www.HitSiteler.com
Gururum - ait Kullanıcı Resmi (Avatar)

Standart

Paylaşım için teşekkürler @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

________________

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

HerŞeyi Sana Yazdım, HerŞeye Seni YazdIm...
 
Alt 13 Ağustos 2024, 13:45   #3
Standart

Emeğinize sağlık

________________

Sonra da sevmelere küsüyor insan işte...



[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Hayaller hep bir yarım.
 
Alt 16 Ağustos 2024, 20:34   #4
✰ ÖzeL..
oMeN - ait Kullanıcı Resmi (Avatar)

Standart

Emeğine sağlık @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

________________

Edep; aklın Tercümanıdır. İnsan edebi kadar akıllı, Aklı kadar şerefli, Şerefi kadar Kıymetlidir. Massive..


 


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı





Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 06:21.