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 columnLocalPath = 'local_path';
static final columnThumbnailPath = 'thumbnail_path'; static final columnThumbnailPath = 'thumbnail_path';
static final columnUrl = 'url'; static final columnPath = 'path';
static final columnHash = 'hash'; static final columnHash = 'hash';
static final columnSyncTimestamp = 'sync_timestamp'; static final columnSyncTimestamp = 'sync_timestamp';
@ -44,7 +44,7 @@ class DatabaseHelper {
CREATE TABLE $table ( CREATE TABLE $table (
$columnLocalPath TEXT NOT NULL, $columnLocalPath TEXT NOT NULL,
$columnThumbnailPath TEXT NOT NULL, $columnThumbnailPath TEXT NOT NULL,
$columnUrl TEXT, $columnPath TEXT,
$columnHash TEXT NOT NULL, $columnHash TEXT NOT NULL,
$columnSyncTimestamp TEXT $columnSyncTimestamp TEXT
) )
@ -79,25 +79,26 @@ class DatabaseHelper {
Future<List<Photo>> getPhotosToBeUploaded() async { Future<List<Photo>> getPhotosToBeUploaded() async {
Database db = await instance.database; 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); return _convertToPhotos(results);
} }
// We are assuming here that the hash column in the map is set. The other // We are assuming here that the hash column in the map is set. The other
// column values will be used to update the row. // column values will be used to update the row.
Future<int> updateUrlAndTimestamp( Future<int> updatePathAndTimestamp(
String hash, String url, String timestamp) async { String hash, String path, String timestamp) async {
Database db = await instance.database; Database db = await instance.database;
var row = new Map<String, dynamic>(); var row = new Map<String, dynamic>();
row[columnUrl] = url; row[columnPath] = path;
row[columnSyncTimestamp] = timestamp; row[columnSyncTimestamp] = timestamp;
return await db return await db
.update(table, row, where: '$columnHash = ?', whereArgs: [hash]); .update(table, row, where: '$columnHash = ?', whereArgs: [hash]);
} }
Future<Photo> getPhotoByUrl(String url) async { Future<Photo> getPhotoByPath(String path) async {
Database db = await instance.database; 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) { if (rows.length > 0) {
return Photo.fromRow(rows[0]); return Photo.fromRow(rows[0]);
} else { } else {
@ -124,7 +125,7 @@ class DatabaseHelper {
var row = new Map<String, dynamic>(); var row = new Map<String, dynamic>();
row[columnLocalPath] = photo.localPath; row[columnLocalPath] = photo.localPath;
row[columnThumbnailPath] = photo.thumbnailPath; row[columnThumbnailPath] = photo.thumbnailPath;
row[columnUrl] = photo.url; row[columnPath] = photo.path;
row[columnHash] = photo.hash; row[columnHash] = photo.hash;
row[columnSyncTimestamp] = photo.syncTimestamp; row[columnSyncTimestamp] = photo.syncTimestamp;
return row; return row;

View file

@ -1,8 +1,8 @@
class Face { class Face {
final int faceID; final int faceID;
final String thumbnailURL; final String thumbnailPath;
Face.fromJson(Map<String, dynamic> json) Face.fromJson(Map<String, dynamic> json)
: faceID = json["faceID"], : 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'; import 'package:photo_manager/photo_manager.dart';
class Photo { class Photo {
String url; String path;
String localPath; String localPath;
String thumbnailPath; String thumbnailPath;
String hash; String hash;
@ -16,14 +16,14 @@ class Photo {
Photo(); Photo();
Photo.fromJson(Map<String, dynamic> json) Photo.fromJson(Map<String, dynamic> json)
: url = json["url"], : path = json["path"],
hash = json["hash"], hash = json["hash"],
syncTimestamp = json["syncTimestamp"]; syncTimestamp = json["syncTimestamp"];
Photo.fromRow(Map<String, dynamic> row) Photo.fromRow(Map<String, dynamic> row)
: localPath = row["local_path"], : localPath = row["local_path"],
thumbnailPath = row["thumbnail_path"], thumbnailPath = row["thumbnail_path"],
url = row["url"], path = row["path"],
hash = row["hash"], hash = row["hash"],
syncTimestamp = row["sync_timestamp"] == null syncTimestamp = row["sync_timestamp"] == null
? -1 ? -1

View file

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

View file

@ -93,8 +93,8 @@ class PhotoSyncManager {
return; return;
} }
var uploadedPhoto = await _uploadFile(photo.localPath, photo.hash); var uploadedPhoto = await _uploadFile(photo.localPath, photo.hash);
await DatabaseHelper.instance.updateUrlAndTimestamp(photo.hash, await DatabaseHelper.instance.updatePathAndTimestamp(photo.hash,
uploadedPhoto.url, uploadedPhoto.syncTimestamp.toString()); uploadedPhoto.path, uploadedPhoto.syncTimestamp.toString());
prefs.setInt(_lastSyncTimestampKey, uploadedPhoto.syncTimestamp); prefs.setInt(_lastSyncTimestampKey, uploadedPhoto.syncTimestamp);
uploadedCount++; uploadedCount++;
} }
@ -106,13 +106,13 @@ class PhotoSyncManager {
var path = externalPath + "/photos/"; var path = externalPath + "/photos/";
for (Photo photo in diff) { for (Photo photo in diff) {
if (await DatabaseHelper.instance.containsPhotoHash(photo.hash)) { if (await DatabaseHelper.instance.containsPhotoHash(photo.hash)) {
await DatabaseHelper.instance.updateUrlAndTimestamp( await DatabaseHelper.instance.updatePathAndTimestamp(
photo.hash, photo.url, photo.syncTimestamp.toString()); photo.hash, photo.path, photo.syncTimestamp.toString());
continue; continue;
} else { } else {
var localPath = path + basename(photo.url); var localPath = path + basename(photo.path);
await _dio await _dio
.download(Constants.ENDPOINT + photo.url, localPath) .download(Constants.ENDPOINT + "/" + photo.path, localPath)
.catchError(_onError); .catchError(_onError);
photo.localPath = localPath; photo.localPath = localPath;
await Photo.setThumbnail(photo); await Photo.setThumbnail(photo);

View file

@ -28,7 +28,7 @@ class FaceSearchResultsPage extends StatelessWidget {
Hero( Hero(
tag: "face_" + _face.faceID.toString(), tag: "face_" + _face.faceID.toString(),
child: CircularNetworkImageWidget( child: CircularNetworkImageWidget(
Constants.ENDPOINT + _face.thumbnailURL, 20), Constants.ENDPOINT + _face.thumbnailPath, 20),
) )
], ],
), ),
@ -45,7 +45,7 @@ class FaceSearchResultsPage extends StatelessWidget {
if (snapshot.hasData) { if (snapshot.hasData) {
return GridView.builder( return GridView.builder(
itemBuilder: (_, index) => itemBuilder: (_, index) =>
_buildItem(context, snapshot.data[index].url), _buildItem(context, snapshot.data[index].path),
itemCount: snapshot.data.length, itemCount: snapshot.data.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 4, crossAxisCount: 4,
@ -57,25 +57,25 @@ class FaceSearchResultsPage extends StatelessWidget {
); );
} }
Widget _buildItem(BuildContext context, String url) { Widget _buildItem(BuildContext context, String path) {
return GestureDetector( return GestureDetector(
onTap: () async { 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>( return FutureBuilder<Photo>(
future: DatabaseHelper.instance.getPhotoByUrl(url), future: DatabaseHelper.instance.getPhotoByPath(path),
builder: (_, snapshot) { builder: (_, snapshot) {
if (snapshot.hasData) { if (snapshot.hasData) {
return ImageWidget(path: snapshot.data.thumbnailPath); return ImageWidget(path: snapshot.data.thumbnailPath);
} else if (snapshot.hasError) { } else if (snapshot.hasError) {
return Container( return Container(
margin: EdgeInsets.all(2), margin: EdgeInsets.all(2),
child: Image.network(Constants.ENDPOINT + url, child: Image.network(Constants.ENDPOINT + "/" + path,
height: 124, width: 124, fit: BoxFit.cover), height: 124, width: 124, fit: BoxFit.cover),
); );
} else { } else {
@ -85,9 +85,9 @@ class FaceSearchResultsPage extends StatelessWidget {
); );
} }
void _routeToDetailPage(String url, BuildContext context) async { void _routeToDetailPage(String path, BuildContext context) async {
Widget page = NetworkImageDetailPage(url); Widget page = NetworkImageDetailPage(path);
var photo = await DatabaseHelper.instance.getPhotoByUrl(url); var photo = await DatabaseHelper.instance.getPhotoByPath(path);
if (photo != null) { if (photo != null) {
page = DetailPage(photo); page = DetailPage(photo);
} }

View file

@ -1,9 +1,10 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:myapp/core/constants.dart' as Constants;
class NetworkImageDetailPage extends StatelessWidget { 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 @override
Widget build(Object context) { Widget build(Object context) {
@ -32,7 +33,7 @@ class NetworkImageDetailPage extends StatelessWidget {
onVerticalDragUpdate: (details) { onVerticalDragUpdate: (details) {
Navigator.pop(context); 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( child: Hero(
tag: "face_" + face.faceID.toString(), tag: "face_" + face.faceID.toString(),
child: CircularNetworkImageWidget( child: CircularNetworkImageWidget(
Constants.ENDPOINT + face.thumbnailURL, 60), Constants.ENDPOINT + "/" + face.thumbnailPath, 60),
), ),
); );
} }