Update API response parameter names

This commit is contained in:
Vishnu Mohandas 2020-04-10 00:33:11 +05:30
parent 80655c61d9
commit 46d173ada6
8 changed files with 39 additions and 37 deletions

View file

@ -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;

View file

@ -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"];
}

View file

@ -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

View file

@ -1,5 +1,5 @@
class SearchResult {
final String url;
final String path;
SearchResult(this.url);
SearchResult(this.path);
}

View file

@ -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);

View file

@ -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);
}

View file

@ -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),
);
}
}

View file

@ -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),
),
);
}