Files
puzzlez/src/app/haxe/ru/m/puzzlez/source/FileImageSource.hx

35 lines
964 B
Haxe

package ru.m.puzzlez.source;
import promhx.Promise;
import ru.m.data.DataSource;
import ru.m.puzzlez.core.ImageSource;
import ru.m.puzzlez.core.ImageValue;
import ru.m.puzzlez.proto.game.ImageId;
import ru.m.puzzlez.storage.FileStorage;
class FileImageSource implements ImageSource {
public var id(default, never):String = "file";
@:provide private var storage:FileStorage;
public function new() {}
public function getPage(page:Page):Promise<DataPage<ImageId>> {
return storage.getIndexPage(page).then((response:DataPage<String>) -> {
return {
page: response.page,
data: response.data.map(key -> new ImageId().setSource(id).setId(key)),
total: response.total,
}
});
}
public function load(id:String, thumb:Bool = false):Promise<ImageValue> {
return storage.get(id).then(bytes -> ImageValue.BYTES(bytes));
}
public function getCategories():Null<Promise<Array<String>>> {
return null;
}
}