35 lines
964 B
Haxe
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;
|
|
}
|
|
}
|