2017-07-20 02:47:09 +08:00
|
|
|
import {DirectoryDTO, NotModifiedDirectoryDTO} from "../../../common/entities/DirectoryDTO";
|
2016-12-27 23:09:47 +08:00
|
|
|
import {IGalleryManager} from "../interfaces/IGalleryManager";
|
2017-07-20 02:47:09 +08:00
|
|
|
import * as path from "path";
|
|
|
|
import * as fs from "fs";
|
2016-04-22 19:23:44 +08:00
|
|
|
import {DiskManager} from "../DiskManger";
|
2017-07-20 02:47:09 +08:00
|
|
|
import {ProjectPath} from "../../ProjectPath";
|
|
|
|
import {Config} from "../../../common/config/private/Config";
|
2016-04-22 19:23:44 +08:00
|
|
|
|
2016-05-09 23:04:56 +08:00
|
|
|
export class GalleryManager implements IGalleryManager {
|
2016-04-22 19:23:44 +08:00
|
|
|
|
2017-07-20 02:47:09 +08:00
|
|
|
public listDirectory(relativeDirectoryName: string, knownLastModified?: number, knownLastScanned?: number): Promise<DirectoryDTO | NotModifiedDirectoryDTO> {
|
|
|
|
//If it seems that the content did not changed, do not work on it
|
|
|
|
if (knownLastModified && knownLastScanned) {
|
|
|
|
const stat = fs.statSync(path.join(ProjectPath.ImageFolder, relativeDirectoryName));
|
|
|
|
const lastModified = Math.max(stat.ctime.getTime(), stat.mtime.getTime());
|
|
|
|
if (Date.now() - knownLastScanned <= Config.Server.cachedFolderTimeout && lastModified == knownLastModified) {
|
|
|
|
return Promise.resolve(<NotModifiedDirectoryDTO>{notModified: true});
|
|
|
|
}
|
|
|
|
}
|
2017-07-04 01:17:49 +08:00
|
|
|
return DiskManager.scanDirectory(relativeDirectoryName);
|
|
|
|
}
|
2016-04-22 19:23:44 +08:00
|
|
|
|
2017-07-04 01:17:49 +08:00
|
|
|
}
|