Skip to content

Commit 654a31d

Browse files
committed
Release 0.5: Multi-select, Gallery Fixes, and Video Thumbnails
Features: - Implemented multi-select and bulk download for Creator Profiles. - Added thumbnails for images and videos in Download Manager. - Enabled video thumbnail generation using Coil's VideoFrameDecoder. Fixes: - Resolved off-by-one error in Gallery viewer navigation. - Fixed missing video thumbnails in Gallery and Download Manager. - Fixed build errors and restored corrupted files in Gallery and Download screens. Refactoring: - Extracted [SelectionTopAppBar](app/src/main/java/com/example/kemono/ui/components/SelectionTopAppBar.kt:14:0-40:1) to a shared component for reuse. Chore: - Updated version to 0.5 Pre-Release. - Updated .gitignore to properly exclude build artifacts.
1 parent 386d58a commit 654a31d

338 files changed

Lines changed: 588 additions & 244 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ release/
1818
# Gradle files
1919
.gradle/
2020
build/
21+
**/build/
2122

2223
# Local configuration file (sdk path, etc)
2324
local.properties
0 Bytes
Binary file not shown.
162 Bytes
Binary file not shown.

.gradle/file-system.probe

0 Bytes
Binary file not shown.

app/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ android {
1313
applicationId = "com.antarc.kura"
1414
minSdk = 24
1515
targetSdk = 34
16-
versionCode = 3
17-
versionName = "0.4"
16+
versionCode = 4
17+
versionName = "0.5"
1818

1919
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
2020
vectorDrawables {

app/build/generated/hilt/component_sources/debug/com/example/kemono/DaggerKemonoApp_HiltComponents_SingletonC.java

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@
3232
import com.example.kemono.di.NetworkModule_ProvideOkHttpClientFactory;
3333
import com.example.kemono.di.NetworkModule_ProvideRetrofitFactory;
3434
import com.example.kemono.ui.creators.CreatorViewModel;
35+
import com.example.kemono.ui.creators.CreatorViewModel_Factory;
3536
import com.example.kemono.ui.creators.CreatorViewModel_HiltModules_KeyModule_ProvideFactory;
37+
import com.example.kemono.ui.creators.CreatorViewModel_MembersInjector;
3638
import com.example.kemono.ui.downloads.DownloadManagerViewModel;
3739
import com.example.kemono.ui.downloads.DownloadManagerViewModel_HiltModules_KeyModule_ProvideFactory;
3840
import com.example.kemono.ui.favorites.FavoritesViewModel;
@@ -485,6 +487,11 @@ public Map<String, Object> getHiltViewModelAssistedMap() {
485487
return ImmutableMap.<String, Object>of();
486488
}
487489

490+
private CreatorViewModel injectCreatorViewModel(CreatorViewModel instance) {
491+
CreatorViewModel_MembersInjector.injectDownloadRepository(instance, singletonCImpl.downloadRepositoryProvider.get());
492+
return instance;
493+
}
494+
488495
private static final class SwitchingProvider<T> implements Provider<T> {
489496
private final SingletonCImpl singletonCImpl;
490497

@@ -507,10 +514,10 @@ private static final class SwitchingProvider<T> implements Provider<T> {
507514
public T get() {
508515
switch (id) {
509516
case 0: // com.example.kemono.ui.posts.CreatorPostListViewModel
510-
return (T) new CreatorPostListViewModel(singletonCImpl.kemonoRepositoryProvider.get(), viewModelCImpl.savedStateHandle);
517+
return (T) new CreatorPostListViewModel(singletonCImpl.kemonoRepositoryProvider.get(), singletonCImpl.downloadRepositoryProvider.get(), viewModelCImpl.savedStateHandle);
511518

512519
case 1: // com.example.kemono.ui.creators.CreatorViewModel
513-
return (T) new CreatorViewModel(singletonCImpl.kemonoRepositoryProvider.get(), singletonCImpl.networkMonitorProvider.get(), singletonCImpl.settingsRepositoryProvider.get());
520+
return (T) viewModelCImpl.injectCreatorViewModel(CreatorViewModel_Factory.newInstance(singletonCImpl.kemonoRepositoryProvider.get(), singletonCImpl.networkMonitorProvider.get(), singletonCImpl.settingsRepositoryProvider.get()));
514521

515522
case 2: // com.example.kemono.ui.downloads.DownloadManagerViewModel
516523
return (T) new DownloadManagerViewModel(singletonCImpl.downloadRepositoryProvider.get());
@@ -628,10 +635,10 @@ private static final class SingletonCImpl extends KemonoApp_HiltComponents.Singl
628635

629636
private Provider<KemonoRepository> kemonoRepositoryProvider;
630637

631-
private Provider<NetworkMonitor> networkMonitorProvider;
632-
633638
private Provider<DownloadRepository> downloadRepositoryProvider;
634639

640+
private Provider<NetworkMonitor> networkMonitorProvider;
641+
635642
private Provider<OkHttpClient> provideGithubOkHttpClientProvider;
636643

637644
private Provider<Retrofit> provideGithubRetrofitProvider;
@@ -669,8 +676,8 @@ private void initialize(final ApplicationContextModule applicationContextModuleP
669676
this.provideKemonoApiProvider = DoubleCheck.provider(new SwitchingProvider<KemonoApi>(singletonCImpl, 6));
670677
this.provideAppDatabaseProvider = DoubleCheck.provider(new SwitchingProvider<AppDatabase>(singletonCImpl, 8));
671678
this.kemonoRepositoryProvider = DoubleCheck.provider(new SwitchingProvider<KemonoRepository>(singletonCImpl, 5));
672-
this.networkMonitorProvider = DoubleCheck.provider(new SwitchingProvider<NetworkMonitor>(singletonCImpl, 9));
673-
this.downloadRepositoryProvider = DoubleCheck.provider(new SwitchingProvider<DownloadRepository>(singletonCImpl, 10));
679+
this.downloadRepositoryProvider = DoubleCheck.provider(new SwitchingProvider<DownloadRepository>(singletonCImpl, 9));
680+
this.networkMonitorProvider = DoubleCheck.provider(new SwitchingProvider<NetworkMonitor>(singletonCImpl, 10));
674681
this.provideGithubOkHttpClientProvider = DoubleCheck.provider(new SwitchingProvider<OkHttpClient>(singletonCImpl, 14));
675682
this.provideGithubRetrofitProvider = DoubleCheck.provider(new SwitchingProvider<Retrofit>(singletonCImpl, 13));
676683
this.provideGithubApiProvider = DoubleCheck.provider(new SwitchingProvider<GithubApi>(singletonCImpl, 12));
@@ -743,12 +750,12 @@ public T get() {
743750
case 8: // com.example.kemono.data.local.AppDatabase
744751
return (T) DatabaseModule_ProvideAppDatabaseFactory.provideAppDatabase(ApplicationContextModule_ProvideContextFactory.provideContext(singletonCImpl.applicationContextModule));
745752

746-
case 9: // com.example.kemono.util.NetworkMonitor
747-
return (T) new NetworkMonitor(ApplicationContextModule_ProvideContextFactory.provideContext(singletonCImpl.applicationContextModule));
748-
749-
case 10: // com.example.kemono.data.repository.DownloadRepository
753+
case 9: // com.example.kemono.data.repository.DownloadRepository
750754
return (T) new DownloadRepository(ApplicationContextModule_ProvideContextFactory.provideContext(singletonCImpl.applicationContextModule), singletonCImpl.downloadDao());
751755

756+
case 10: // com.example.kemono.util.NetworkMonitor
757+
return (T) new NetworkMonitor(ApplicationContextModule_ProvideContextFactory.provideContext(singletonCImpl.applicationContextModule));
758+
752759
case 11: // com.example.kemono.data.repository.UpdateRepository
753760
return (T) new UpdateRepository(singletonCImpl.provideGithubApiProvider.get(), ApplicationContextModule_ProvideContextFactory.provideContext(singletonCImpl.applicationContextModule));
754761

app/build/generated/ksp/debug/java/com/example/kemono/ui/creators/CreatorViewModel_Factory.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.example.kemono.ui.creators;
22

3+
import com.example.kemono.data.repository.DownloadRepository;
34
import com.example.kemono.data.repository.KemonoRepository;
45
import com.example.kemono.data.repository.SettingsRepository;
56
import com.example.kemono.util.NetworkMonitor;
@@ -30,23 +31,30 @@ public final class CreatorViewModel_Factory implements Factory<CreatorViewModel>
3031

3132
private final Provider<SettingsRepository> settingsRepositoryProvider;
3233

34+
private final Provider<DownloadRepository> downloadRepositoryProvider;
35+
3336
public CreatorViewModel_Factory(Provider<KemonoRepository> repositoryProvider,
3437
Provider<NetworkMonitor> networkMonitorProvider,
35-
Provider<SettingsRepository> settingsRepositoryProvider) {
38+
Provider<SettingsRepository> settingsRepositoryProvider,
39+
Provider<DownloadRepository> downloadRepositoryProvider) {
3640
this.repositoryProvider = repositoryProvider;
3741
this.networkMonitorProvider = networkMonitorProvider;
3842
this.settingsRepositoryProvider = settingsRepositoryProvider;
43+
this.downloadRepositoryProvider = downloadRepositoryProvider;
3944
}
4045

4146
@Override
4247
public CreatorViewModel get() {
43-
return newInstance(repositoryProvider.get(), networkMonitorProvider.get(), settingsRepositoryProvider.get());
48+
CreatorViewModel instance = newInstance(repositoryProvider.get(), networkMonitorProvider.get(), settingsRepositoryProvider.get());
49+
CreatorViewModel_MembersInjector.injectDownloadRepository(instance, downloadRepositoryProvider.get());
50+
return instance;
4451
}
4552

4653
public static CreatorViewModel_Factory create(Provider<KemonoRepository> repositoryProvider,
4754
Provider<NetworkMonitor> networkMonitorProvider,
48-
Provider<SettingsRepository> settingsRepositoryProvider) {
49-
return new CreatorViewModel_Factory(repositoryProvider, networkMonitorProvider, settingsRepositoryProvider);
55+
Provider<SettingsRepository> settingsRepositoryProvider,
56+
Provider<DownloadRepository> downloadRepositoryProvider) {
57+
return new CreatorViewModel_Factory(repositoryProvider, networkMonitorProvider, settingsRepositoryProvider, downloadRepositoryProvider);
5058
}
5159

5260
public static CreatorViewModel newInstance(KemonoRepository repository,

app/build/generated/ksp/debug/java/com/example/kemono/ui/posts/CreatorPostListViewModel_Factory.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.example.kemono.ui.posts;
22

33
import androidx.lifecycle.SavedStateHandle;
4+
import com.example.kemono.data.repository.DownloadRepository;
45
import com.example.kemono.data.repository.KemonoRepository;
56
import dagger.internal.DaggerGenerated;
67
import dagger.internal.Factory;
@@ -25,27 +26,32 @@
2526
public final class CreatorPostListViewModel_Factory implements Factory<CreatorPostListViewModel> {
2627
private final Provider<KemonoRepository> repositoryProvider;
2728

29+
private final Provider<DownloadRepository> downloadRepositoryProvider;
30+
2831
private final Provider<SavedStateHandle> savedStateHandleProvider;
2932

3033
public CreatorPostListViewModel_Factory(Provider<KemonoRepository> repositoryProvider,
34+
Provider<DownloadRepository> downloadRepositoryProvider,
3135
Provider<SavedStateHandle> savedStateHandleProvider) {
3236
this.repositoryProvider = repositoryProvider;
37+
this.downloadRepositoryProvider = downloadRepositoryProvider;
3338
this.savedStateHandleProvider = savedStateHandleProvider;
3439
}
3540

3641
@Override
3742
public CreatorPostListViewModel get() {
38-
return newInstance(repositoryProvider.get(), savedStateHandleProvider.get());
43+
return newInstance(repositoryProvider.get(), downloadRepositoryProvider.get(), savedStateHandleProvider.get());
3944
}
4045

4146
public static CreatorPostListViewModel_Factory create(
4247
Provider<KemonoRepository> repositoryProvider,
48+
Provider<DownloadRepository> downloadRepositoryProvider,
4349
Provider<SavedStateHandle> savedStateHandleProvider) {
44-
return new CreatorPostListViewModel_Factory(repositoryProvider, savedStateHandleProvider);
50+
return new CreatorPostListViewModel_Factory(repositoryProvider, downloadRepositoryProvider, savedStateHandleProvider);
4551
}
4652

4753
public static CreatorPostListViewModel newInstance(KemonoRepository repository,
48-
SavedStateHandle savedStateHandle) {
49-
return new CreatorPostListViewModel(repository, savedStateHandle);
54+
DownloadRepository downloadRepository, SavedStateHandle savedStateHandle) {
55+
return new CreatorPostListViewModel(repository, downloadRepository, savedStateHandle);
5056
}
5157
}
11.3 KB
Binary file not shown.

app/build/intermediates/apk/debug/output-metadata.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
"type": "SINGLE",
1212
"filters": [],
1313
"attributes": [],
14-
"versionCode": 3,
15-
"versionName": "0.3-Pre-Release",
14+
"versionCode": 4,
15+
"versionName": "0.5-Pre-Release",
1616
"outputFile": "app-debug.apk"
1717
}
1818
],

0 commit comments

Comments
 (0)