Update API response parameter names
This commit is contained in:
parent
80655c61d9
commit
46d173ada6
8 changed files with 39 additions and 37 deletions
|
@ -13,7 +13,7 @@ class DatabaseHelper {
|
|||
|
||||
static final columnLocalPath = 'local_path';
|
||||
static final columnThumbnailPath = 'thumbnail_path';
|
||||
static final columnUrl = 'url';
|
||||
static final columnPath = 'path';
|
||||
static final columnHash = 'hash';
|
||||
static final columnSyncTimestamp = 'sync_timestamp';
|
||||
|
||||
|
@ -44,7 +44,7 @@ class DatabaseHelper {
|
|||
CREATE TABLE $table (
|
||||
$columnLocalPath TEXT NOT NULL,
|
||||
$columnThumbnailPath TEXT NOT NULL,
|
||||
$columnUrl TEXT,
|
||||
$columnPath TEXT,
|
||||
$columnHash TEXT NOT NULL,
|
||||
$columnSyncTimestamp TEXT
|
||||
)
|
||||
|
@ -79,25 +79,26 @@ class DatabaseHelper {
|
|||
|
||||
Future<List<Photo>> getPhotosToBeUploaded() async {
|
||||
Database db = await instance.database;
|
||||
var results = await db.query(table, where: '$columnUrl IS NULL');
|
||||
var results = await db.query(table, where: '$columnPath IS NULL');
|
||||
return _convertToPhotos(results);
|
||||
}
|
||||
|
||||
// We are assuming here that the hash column in the map is set. The other
|
||||
// column values will be used to update the row.
|
||||
Future<int> updateUrlAndTimestamp(
|
||||
String hash, String url, String timestamp) async {
|
||||
Future<int> updatePathAndTimestamp(
|
||||
String hash, String path, String timestamp) async {
|
||||
Database db = await instance.database;
|
||||
var row = new Map<String, dynamic>();
|
||||
row[columnUrl] = url;
|
||||
row[columnPath] = path;
|
||||
row[columnSyncTimestamp] = timestamp;
|
||||
return await db
|
||||
.update(table, row, where: '$columnHash = ?', whereArgs: [hash]);
|
||||
}
|
||||
|
||||
Future<Photo> getPhotoByUrl(String url) async {
|
||||
Future<Photo> getPhotoByPath(String path) async {
|
||||
Database db = await instance.database;
|
||||
var rows = await db.query(table, where: '$columnUrl =?', whereArgs: [url]);
|
||||
var rows =
|
||||
await db.query(table, where: '$columnPath =?', whereArgs: [path]);
|
||||
if (rows.length > 0) {
|
||||
return Photo.fromRow(rows[0]);
|
||||
} else {
|
||||
|
@ -124,7 +125,7 @@ class DatabaseHelper {
|
|||
var row = new Map<String, dynamic>();
|
||||
row[columnLocalPath] = photo.localPath;
|
||||
row[columnThumbnailPath] = photo.thumbnailPath;
|
||||
row[columnUrl] = photo.url;
|
||||
row[columnPath] = photo.path;
|
||||
row[columnHash] = photo.hash;
|
||||
row[columnSyncTimestamp] = photo.syncTimestamp;
|
||||
return row;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
class Face {
|
||||
final int faceID;
|
||||
final String thumbnailURL;
|
||||
final String thumbnailPath;
|
||||
|
||||
Face.fromJson(Map<String, dynamic> json)
|
||||
: faceID = json["faceID"],
|
||||
thumbnailURL = json["thumbnailURL"];
|
||||
thumbnailPath = json["thumbnailPath"];
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ import 'package:path_provider/path_provider.dart';
|
|||
import 'package:photo_manager/photo_manager.dart';
|
||||
|
||||
class Photo {
|
||||
String url;
|
||||
String path;
|
||||
String localPath;
|
||||
String thumbnailPath;
|
||||
String hash;
|
||||
|
@ -16,14 +16,14 @@ class Photo {
|
|||
Photo();
|
||||
|
||||
Photo.fromJson(Map<String, dynamic> json)
|
||||
: url = json["url"],
|
||||
: path = json["path"],
|
||||
hash = json["hash"],
|
||||
syncTimestamp = json["syncTimestamp"];
|
||||
|
||||
Photo.fromRow(Map<String, dynamic> row)
|
||||
: localPath = row["local_path"],
|
||||
thumbnailPath = row["thumbnail_path"],
|
||||
url = row["url"],
|
||||
path = row["path"],
|
||||
hash = row["hash"],
|
||||
syncTimestamp = row["sync_timestamp"] == null
|
||||
? -1
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
class SearchResult {
|
||||
final String url;
|
||||
final String path;
|
||||
|
||||
SearchResult(this.url);
|
||||
SearchResult(this.path);
|
||||
}
|
||||
|
|
|
@ -93,8 +93,8 @@ class PhotoSyncManager {
|
|||
return;
|
||||
}
|
||||
var uploadedPhoto = await _uploadFile(photo.localPath, photo.hash);
|
||||
await DatabaseHelper.instance.updateUrlAndTimestamp(photo.hash,
|
||||
uploadedPhoto.url, uploadedPhoto.syncTimestamp.toString());
|
||||
await DatabaseHelper.instance.updatePathAndTimestamp(photo.hash,
|
||||
uploadedPhoto.path, uploadedPhoto.syncTimestamp.toString());
|
||||
prefs.setInt(_lastSyncTimestampKey, uploadedPhoto.syncTimestamp);
|
||||
uploadedCount++;
|
||||
}
|
||||
|
@ -106,13 +106,13 @@ class PhotoSyncManager {
|
|||
var path = externalPath + "/photos/";
|
||||
for (Photo photo in diff) {
|
||||
if (await DatabaseHelper.instance.containsPhotoHash(photo.hash)) {
|
||||
await DatabaseHelper.instance.updateUrlAndTimestamp(
|
||||
photo.hash, photo.url, photo.syncTimestamp.toString());
|
||||
await DatabaseHelper.instance.updatePathAndTimestamp(
|
||||
photo.hash, photo.path, photo.syncTimestamp.toString());
|
||||
continue;
|
||||
} else {
|
||||
var localPath = path + basename(photo.url);
|
||||
var localPath = path + basename(photo.path);
|
||||
await _dio
|
||||
.download(Constants.ENDPOINT + photo.url, localPath)
|
||||
.download(Constants.ENDPOINT + "/" + photo.path, localPath)
|
||||
.catchError(_onError);
|
||||
photo.localPath = localPath;
|
||||
await Photo.setThumbnail(photo);
|
||||
|
|
|
@ -28,7 +28,7 @@ class FaceSearchResultsPage extends StatelessWidget {
|
|||
Hero(
|
||||
tag: "face_" + _face.faceID.toString(),
|
||||
child: CircularNetworkImageWidget(
|
||||
Constants.ENDPOINT + _face.thumbnailURL, 20),
|
||||
Constants.ENDPOINT + _face.thumbnailPath, 20),
|
||||
)
|
||||
],
|
||||
),
|
||||
|
@ -45,7 +45,7 @@ class FaceSearchResultsPage extends StatelessWidget {
|
|||
if (snapshot.hasData) {
|
||||
return GridView.builder(
|
||||
itemBuilder: (_, index) =>
|
||||
_buildItem(context, snapshot.data[index].url),
|
||||
_buildItem(context, snapshot.data[index].path),
|
||||
itemCount: snapshot.data.length,
|
||||
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
|
||||
crossAxisCount: 4,
|
||||
|
@ -57,25 +57,25 @@ class FaceSearchResultsPage extends StatelessWidget {
|
|||
);
|
||||
}
|
||||
|
||||
Widget _buildItem(BuildContext context, String url) {
|
||||
Widget _buildItem(BuildContext context, String path) {
|
||||
return GestureDetector(
|
||||
onTap: () async {
|
||||
_routeToDetailPage(url, context);
|
||||
_routeToDetailPage(path, context);
|
||||
},
|
||||
child: _getImage(url),
|
||||
child: _getImage(path),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _getImage(String url) {
|
||||
Widget _getImage(String path) {
|
||||
return FutureBuilder<Photo>(
|
||||
future: DatabaseHelper.instance.getPhotoByUrl(url),
|
||||
future: DatabaseHelper.instance.getPhotoByPath(path),
|
||||
builder: (_, snapshot) {
|
||||
if (snapshot.hasData) {
|
||||
return ImageWidget(path: snapshot.data.thumbnailPath);
|
||||
} else if (snapshot.hasError) {
|
||||
return Container(
|
||||
margin: EdgeInsets.all(2),
|
||||
child: Image.network(Constants.ENDPOINT + url,
|
||||
child: Image.network(Constants.ENDPOINT + "/" + path,
|
||||
height: 124, width: 124, fit: BoxFit.cover),
|
||||
);
|
||||
} else {
|
||||
|
@ -85,9 +85,9 @@ class FaceSearchResultsPage extends StatelessWidget {
|
|||
);
|
||||
}
|
||||
|
||||
void _routeToDetailPage(String url, BuildContext context) async {
|
||||
Widget page = NetworkImageDetailPage(url);
|
||||
var photo = await DatabaseHelper.instance.getPhotoByUrl(url);
|
||||
void _routeToDetailPage(String path, BuildContext context) async {
|
||||
Widget page = NetworkImageDetailPage(path);
|
||||
var photo = await DatabaseHelper.instance.getPhotoByPath(path);
|
||||
if (photo != null) {
|
||||
page = DetailPage(photo);
|
||||
}
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:myapp/core/constants.dart' as Constants;
|
||||
|
||||
class NetworkImageDetailPage extends StatelessWidget {
|
||||
final String _url;
|
||||
final String _path;
|
||||
|
||||
const NetworkImageDetailPage(this._url, {Key key}) : super(key: key);
|
||||
const NetworkImageDetailPage(this._path, {Key key}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(Object context) {
|
||||
|
@ -32,7 +33,7 @@ class NetworkImageDetailPage extends StatelessWidget {
|
|||
onVerticalDragUpdate: (details) {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
child: Image.network(_url),
|
||||
child: Image.network(Constants.ENDPOINT + "/" + _path),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,7 +72,7 @@ class SearchPage extends StatelessWidget {
|
|||
child: Hero(
|
||||
tag: "face_" + face.faceID.toString(),
|
||||
child: CircularNetworkImageWidget(
|
||||
Constants.ENDPOINT + face.thumbnailURL, 60),
|
||||
Constants.ENDPOINT + "/" + face.thumbnailPath, 60),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue