Skip to content

Commit

Permalink
Merge pull request #5 from C0ntrolDev/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
C0ntrolDev authored Jan 8, 2024
2 parents 65c883f + 3f32fd4 commit 0ceb3a2
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 37 deletions.
3 changes: 2 additions & 1 deletion android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
android:label="Spotify Downloader"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:requestLegacyExternalStorage="true">
android:requestLegacyExternalStorage="true"
android:largeHeap="true">
<activity android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:exported="true"
Expand Down
7 changes: 5 additions & 2 deletions lib/core/db/local_db_impl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -52,16 +52,19 @@ class LocalDbImpl extends LocalDb {
db.execute("CREATE TABLE downloadTracksCollections ("
"spotifyId TEXT NOT NULL,"
"type INTEGER NOT NULL,"
"downloadTracksCollectionsGroups_directoryPath TEXT NOT NULL,"
"FOREIGN KEY (downloadTracksCollectionsGroups_directoryPath) REFERENCES downloadTracksCollectionsGroups (directoryPath) ON DELETE CASCADE"
"downloadTracksCollectionsGroup_directoryPath TEXT NOT NULL,"
"FOREIGN KEY (downloadTracksCollectionsGroup_directoryPath) REFERENCES downloadTracksCollectionsGroups (directoryPath) ON DELETE CASCADE,"
"PRIMARY KEY (spotifyId, type, downloadTracksCollectionsGroup_directoryPath)"
")");

db.execute("CREATE TABLE downloadTracks ("
"downloadTracksCollection_spotifyId TEXT NOT NULL,"
"downloadTracksCollection_type INTEGER NOT NULL,"
"downloadTracksCollectionGroup_directoryPath TEXT NOT NULL,"
"spotifyId TEXT NOT NULL,"
"youtubeUrl TEXT NOT NULL,"
"savePath TEXT NOT NULL,"
"FOREIGN KEY (downloadTracksCollectionGroup_directoryPath) REFERENCES downloadTracksCollections (downloadTracksCollectionsGroup_directoryPath) ON DELETE CASCADE,"
"FOREIGN KEY (downloadTracksCollection_spotifyId) REFERENCES downloadTracksCollections (spotifyId) ON DELETE CASCADE,"
"FOREIGN KEY (downloadTracksCollection_type) REFERENCES downloadTracksCollections (type) ON DELETE CASCADE,"
"PRIMARY KEY (downloadTracksCollection_spotifyId, downloadTracksCollection_type, spotifyId)"
Expand Down
4 changes: 0 additions & 4 deletions lib/core/util/util_methods.dart
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,6 @@ Future<Result<Failure, T>> handleSpotifyClientExceptions<T>(Future<Result<Failur
return Result.notSuccessful(NotAuthorizedFailure(message: e));
}

if (e.status == 403) {
return Result.notSuccessful(NotAuthorizedFailure(message: e));
}

return Result.notSuccessful(Failure(message: e));
} on ClientException catch (e) {
return Result.notSuccessful(NetworkFailure(message: e));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,42 +22,28 @@ class LocalTracksDataSource {

Future<void> removeLocalTrackFromStorage(LocalTrackDto localTrackDto) async {
final database = _localDb.getDb();
await database.rawDelete('''
DELETE dt
FROM downloadTracks dt
JOIN downloadTracksCollections dtc ON dtc.spotifyId = dt.downloadTracksCollection_spotifyId
AND dtc.type = dt.downloadTracksCollection_type
JOIN downloadTracksCollectionsGroups dtcg ON dtcg.directoryPath = dtc.downloadTracksCollectionsGroups_directoryPath
WHERE dt.spotifyId = ?
AND dtc.spotifyId = ?
AND dtc.type = ?
AND dtcg.directoryPath = ?;
''', [
localTrackDto.spotifyId,
await database.delete('downloadTracks', where: '''downloadTracksCollection_spotifyId = ?
AND downloadTracksCollection_type = ?
AND downloadTracksCollectionGroup_directoryPath = ?
AND spotifyId = ?''', whereArgs: [
localTrackDto.tracksCollection.spotifyId,
localTrackDto.tracksCollection.type.index,
localTrackDto.tracksCollection.group.directoryPath
localTrackDto.tracksCollection.group.directoryPath,
localTrackDto.spotifyId,
]);
}

Future<LocalTrackDto?> getLocalTrackFromStorage(
LocalTracksCollectionDto localTracksCollectionDto, String spotifyId) async {
final database = _localDb.getDb();
final rawLocalTracks = await database.rawQuery('''
SELECT dt.*, dtcg.directoryPath AS group_directoryPath
FROM downloadTracks dt
JOIN downloadTracksCollections dtc ON dtc.spotifyId = dt.downloadTracksCollection_spotifyId
AND dtc.type = dt.downloadTracksCollection_type
JOIN downloadTracksCollectionsGroups dtcg ON dtcg.directoryPath = dtc.downloadTracksCollectionsGroups_directoryPath
WHERE dt.spotifyId = ?
AND dtc.spotifyId = ?
AND dtc.type = ?
AND dtcg.directoryPath = ?
''', [
spotifyId,
final rawLocalTracks = await database.query('downloadTracks', where: '''downloadTracksCollection_spotifyId = ?
AND downloadTracksCollection_type = ?
AND downloadTracksCollectionGroup_directoryPath = ?
AND spotifyId = ?''', whereArgs: [
localTracksCollectionDto.spotifyId,
localTracksCollectionDto.type.index,
localTracksCollectionDto.group.directoryPath
localTracksCollectionDto.group.directoryPath,
spotifyId
]);
return rawLocalTracks.map((rawLocalTrack) => _localTrackDtoFromMap(rawLocalTrack)).firstOrNull;
}
Expand All @@ -66,6 +52,7 @@ class LocalTracksDataSource {
return {
'downloadTracksCollection_spotifyId': localTrackDto.tracksCollection.spotifyId,
'downloadTracksCollection_type': localTrackDto.tracksCollection.type.index,
'downloadTracksCollectionGroup_directoryPath': localTrackDto.tracksCollection.group.directoryPath,
'spotifyId': localTrackDto.spotifyId,
'youtubeUrl': localTrackDto.youtubeUrl,
'savePath': localTrackDto.savePath
Expand All @@ -76,7 +63,7 @@ class LocalTracksDataSource {
return {
'spotifyId': localTracksCollectionDto.spotifyId,
'type': localTracksCollectionDto.type.index,
'downloadTracksCollectionsGroups_directoryPath': localTracksCollectionDto.group.directoryPath
'downloadTracksCollectionsGroup_directoryPath': localTracksCollectionDto.group.directoryPath
};
}

Expand All @@ -90,8 +77,7 @@ class LocalTracksDataSource {
tracksCollection: LocalTracksCollectionDto(
spotifyId: map['downloadTracksCollection_spotifyId'],
type: LocalTracksCollectionDtoType.values[map['downloadTracksCollection_type'] as int],
group: LocalTracksCollectionsGroupDto(
directoryPath: map['group_directoryPath'])),
group: LocalTracksCollectionsGroupDto(directoryPath: map['downloadTracksCollectionGroup_directoryPath'])),
spotifyId: map['spotifyId'],
youtubeUrl: map['youtubeUrl'],
savePath: map['savePath'],
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: spotify_downloader
description: A new Flutter project.
publish_to: 'none'

version: 1.0.0+1
version: 1.0.2+1

environment:
sdk: '>=3.1.4 <4.0.0'
Expand Down

0 comments on commit 0ceb3a2

Please sign in to comment.