Skip to content
This repository has been archived by the owner on May 17, 2023. It is now read-only.

Commit

Permalink
Merge pull request #33 from MarcDonald/version/1.3.0
Browse files Browse the repository at this point in the history
Version/1.3.0
  • Loading branch information
MarcDonald committed Dec 17, 2019
2 parents 714136f + ac29145 commit 73b2a92
Show file tree
Hide file tree
Showing 190 changed files with 2,913 additions and 2,181 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Built application files
app/release/
*.apk
*.ap_

Expand Down Expand Up @@ -79,3 +80,6 @@ fastlane/readme.md
/build
/captures
.externalNativeBuild

# Test Files
test-databases/
15 changes: 3 additions & 12 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions .idea/codeStyles/codeStyleConfig.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,11 @@ Used for image loading and caching

[License](https://github.com/bumptech/glide/blob/master/LICENSE)

### [Simple License Display](https://github.com/MarcDonald/SimpleLicenseDisplay)
Used for displaying OSS licenses

MIT License

## Acknowledgments
Thanks to [Jisho.org](https://jisho.org/) for making the API used for searching up words.

Expand Down
33 changes: 20 additions & 13 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -29,38 +29,42 @@ android {
defaultConfig {
applicationId "com.marcdonald.hibi"
minSdkVersion 23
//noinspection OldTargetApi
targetSdkVersion 28
versionCode 31
versionName "1.2.2"
versionCode 32
versionName "1.3.0"
setProperty("archivesBaseName", "Hibi-v$versionName")
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
// Kotlin
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.0'

// AndroidX
implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta1'
implementation 'androidx.preference:preference:1.0.0'
implementation 'androidx.appcompat:appcompat:1.2.0-alpha01'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta3'
implementation 'androidx.preference:preference:1.1.0'
implementation 'com.google.android.material:material:1.0.0'
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0-alpha02"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0-alpha02"
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0-alpha03"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0-alpha03"

// Testing
testImplementation 'junit:junit:4.12'
Expand All @@ -75,9 +79,9 @@ dependencies {
implementation 'com.jakewharton.timber:timber:4.7.1'

// Room
implementation 'androidx.room:room-runtime:2.1.0'
kapt 'androidx.room:room-compiler:2.1.0'
androidTestImplementation 'androidx.room:room-testing:2.1.0'
implementation 'androidx.room:room-runtime:2.2.2'
kapt 'androidx.room:room-compiler:2.2.2'
androidTestImplementation 'androidx.room:room-testing:2.2.2'

// Kodein
implementation 'org.kodein.di:kodein-di-generic-jvm:6.0.1'
Expand All @@ -97,4 +101,7 @@ dependencies {
// Glide for image loading and caching
implementation 'com.github.bumptech.glide:glide:4.9.0'
kapt 'com.github.bumptech.glide:compiler:4.9.0'

// Simple License Display
implementation 'com.marcdonald:simplelicensedisplay:1.0.0'
}
58 changes: 5 additions & 53 deletions app/src/main/java/com/marcdonald/hibi/Hibi.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,32 +31,6 @@ import com.marcdonald.hibi.data.network.jisho.JishoAPIService
import com.marcdonald.hibi.data.repository.*
import com.marcdonald.hibi.internal.NOTIFICATION_CHANNEL_REMINDER_ID
import com.marcdonald.hibi.internal.utils.*
import com.marcdonald.hibi.screens.booksscreen.bookentriesfragment.BookEntriesViewModelFactory
import com.marcdonald.hibi.screens.booksscreen.mainbooksfragment.BooksFragmentViewModelFactory
import com.marcdonald.hibi.screens.calendarscreen.CalendarTabViewModelFactory
import com.marcdonald.hibi.screens.entryscreens.addentryscreen.AddEntryViewModelFactory
import com.marcdonald.hibi.screens.entryscreens.viewentryscreen.ViewEntryViewModelFactory
import com.marcdonald.hibi.screens.mainentries.MainEntriesViewModelFactory
import com.marcdonald.hibi.screens.mainscreen.MainScreenViewModelFactory
import com.marcdonald.hibi.screens.searchentries.searchentriesscreen.SearchEntriesViewModelFactory
import com.marcdonald.hibi.screens.settings.backupdialog.BackupDialogViewModelFactory
import com.marcdonald.hibi.screens.settings.restoredialog.RestoreDialogViewModelFactory
import com.marcdonald.hibi.screens.settings.updatedialog.UpdateDialogViewModelFactory
import com.marcdonald.hibi.screens.tagsscreen.maintagsfragment.TagsFragmentViewModelFactory
import com.marcdonald.hibi.screens.tagsscreen.taggedentriesfragment.TaggedEntriesViewModelFactory
import com.marcdonald.hibi.screens.throwbackscreen.mainthrowbackscreen.ThrowbackFragmentViewModelFactory
import com.marcdonald.hibi.screens.throwbackscreen.throwbackentriesscreen.ThrowbackEntriesViewModelFactory
import com.marcdonald.hibi.search.searchmoreinfoscreen.SearchMoreInfoViewModelFactory
import com.marcdonald.hibi.search.searchresults.SearchViewModelFactory
import com.marcdonald.hibi.uicomponents.addbookdialog.AddBookViewModelFactory
import com.marcdonald.hibi.uicomponents.addentrytobookdialog.AddEntryToBookViewModelFactory
import com.marcdonald.hibi.uicomponents.addnewworddialog.AddNewWordViewModelFactory
import com.marcdonald.hibi.uicomponents.addtagdialog.AddTagViewModelFactory
import com.marcdonald.hibi.uicomponents.addtagtoentrydialog.AddTagToEntryViewModelFactory
import com.marcdonald.hibi.uicomponents.locationdialog.AddLocationToEntryViewModelFactory
import com.marcdonald.hibi.uicomponents.multiselectdialog.addmultientrytobookdialog.AddMultiEntryToBookViewModelFactory
import com.marcdonald.hibi.uicomponents.multiselectdialog.addtagtomultientrydialog.AddTagToMultiEntryViewModelFactory
import com.marcdonald.hibi.uicomponents.newwordsdialog.NewWordViewModelFactory
import org.kodein.di.Kodein
import org.kodein.di.KodeinAware
import org.kodein.di.android.x.androidXModule
Expand Down Expand Up @@ -86,40 +60,18 @@ class Hibi : Application(), KodeinAware {
bind<FileUtils>() with provider { FileUtilsImpl(instance()) }
bind<ThemeUtils>() with provider { ThemeUtilsImpl(instance()) }
bind<UpdateUtils>() with provider { UpdateUtilsImpl(instance()) }
bind<EntryDisplayUtils>() with provider { EntryDisplayUtilsImpl(instance()) }
bind<DateTimeUtils>() with provider { DateTimeUtilsImpl(instance()) }
// </editor-fold>
// <editor-fold desc="Connectivity and Jisho API">
bind<ConnectivityInterceptor>() with singleton { ConnectivityInterceptorImpl(instance()) }
bind<GithubStatusCodeInterceptor>() with singleton { GithubStatusCodeInterceptorImpl() }
bind<JishoAPIService>() with singleton { JishoAPIService(instance()) }
bind<GithubAPIService>() with singleton { GithubAPIService(instance(), instance()) }
// </editor-fold>
// <editor-fold desc="View models">
bind() from provider { MainEntriesViewModelFactory(instance(), instance(), instance()) }
bind() from provider { MainScreenViewModelFactory(instance(), instance()) }
bind() from provider { AddEntryViewModelFactory(instance(), instance(), instance(), instance(), instance(), instance(), instance()) }
bind() from provider { ViewEntryViewModelFactory(instance(), instance(), instance(), instance(), instance(), instance()) }
bind() from provider { SearchViewModelFactory(instance()) }
bind() from provider { SearchMoreInfoViewModelFactory() }
bind() from provider { AddTagToEntryViewModelFactory(instance(), instance()) }
bind() from provider { AddTagViewModelFactory(instance()) }
bind() from provider { NewWordViewModelFactory(instance()) }
bind() from provider { AddNewWordViewModelFactory(instance()) }
bind() from provider { CalendarTabViewModelFactory(instance(), instance(), instance()) }
bind() from provider { TagsFragmentViewModelFactory(instance()) }
bind() from provider { TaggedEntriesViewModelFactory(instance(), instance(), instance()) }
bind() from provider { AddBookViewModelFactory(instance()) }
bind() from provider { BooksFragmentViewModelFactory(instance()) }
bind() from provider { BookEntriesViewModelFactory(instance(), instance(), instance()) }
bind() from provider { AddEntryToBookViewModelFactory(instance(), instance()) }
bind() from provider { AddLocationToEntryViewModelFactory(instance()) }
bind() from provider { SearchEntriesViewModelFactory(instance(), instance(), instance(), instance(), instance()) }
bind() from provider { AddTagToMultiEntryViewModelFactory(instance()) }
bind() from provider { AddMultiEntryToBookViewModelFactory(instance()) }
bind() from provider { BackupDialogViewModelFactory(instance()) }
bind() from provider { RestoreDialogViewModelFactory(instance(), instance()) }
bind() from provider { UpdateDialogViewModelFactory(instance()) }
bind() from provider { ThrowbackFragmentViewModelFactory(instance(), instance(), instance()) }
bind() from provider { ThrowbackEntriesViewModelFactory(instance(), instance(), instance()) }
// <editor-fold desc="View Model Factories">
bind() from provider { HibiViewModelFactory(instance(), instance(), instance(), instance(), instance(), instance(), instance(), instance(), instance(), instance(), instance(), instance(), instance()) }
bind() from provider { HibiAndroidViewModelFactory(instance(), instance(), instance(), instance(), instance(), instance(), instance(), instance(), instance()) }
// </editor-fold>
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/*
* Copyright 2019 Marc Donald
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.marcdonald.hibi

import android.app.Application
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import com.marcdonald.hibi.data.repository.*
import com.marcdonald.hibi.internal.utils.DateTimeUtils
import com.marcdonald.hibi.internal.utils.FileUtils
import com.marcdonald.hibi.internal.utils.UpdateUtils
import com.marcdonald.hibi.screens.entries.addentry.AddEntryViewModel
import com.marcdonald.hibi.screens.main.MainScreenViewModel

@Suppress("UNCHECKED_CAST")
class HibiAndroidViewModelFactory(private val application: Application,
private val entryRepository: EntryRepository,
private val tagEntryRelationRepository: TagEntryRelationRepository,
private val newWordRepository: NewWordRepository,
private val bookEntryRelationRepository: BookEntryRelationRepository,
private val entryImageRepository: EntryImageRepository,
private val fileUtils: FileUtils,
private val updateUtils: UpdateUtils,
private val dateTimeUtils: DateTimeUtils
) : ViewModelProvider.NewInstanceFactory() {

override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return with(modelClass) {
when {
isAssignableFrom(MainScreenViewModel::class.java) -> MainScreenViewModel(application, updateUtils)
isAssignableFrom(AddEntryViewModel::class.java) -> AddEntryViewModel(application, entryRepository, tagEntryRelationRepository, bookEntryRelationRepository, newWordRepository, entryImageRepository, fileUtils, dateTimeUtils)
else -> throw IllegalArgumentException("Unknown ViewModel class: ${modelClass.name}")
}
} as T
}
}

0 comments on commit 73b2a92

Please sign in to comment.