Skip to content

Commit 91496f9

Browse files
Merge pull request #1624 from fossasia/development
chore(release): v0.2.0
2 parents cf2705d + b55e30d commit 91496f9

File tree

97 files changed

+2249
-854
lines changed

Some content is hidden

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

97 files changed

+2249
-854
lines changed

.github/auto_label.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
labels: [fix, chore, ui]
2+
labelMapping:
3+
feat: [feature]
4+
fix(ui): [fix, ui]
5+
feat(ui): [feat, ui]
6+
refactor: [chore, refactor]
7+
chore(refactor): [chore, refactor]
8+
chore(deps): [dependencies]
9+
chore(docs): [chore, docs]
10+
docs: [chore, docs]
11+
test: [chore, test]
12+
chore(ci): [chore, tools, ci]
13+
chore(tools): [chore, tools]
14+
chore(release): [chore, release]

.github/release-drafter.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ categories:
77
label: fix
88
- title: 🧰 Maintenance
99
label: chore
10+
- title: Dependencies and Libraries
11+
label: dependencies
1012
change-template: '- $TITLE (#$NUMBER) - @$AUTHOR'
1113
template: |
1214
## Changes

app/build.gradle

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ android {
1515
compileSdkVersion 28
1616
defaultConfig {
1717
applicationId "com.eventyay.attendee"
18-
minSdkVersion 16
18+
minSdkVersion 21
1919
targetSdkVersion 28
20-
versionCode 6
21-
versionName "0.1.2"
20+
versionCode 7
21+
versionName "0.2.0"
2222
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2323
vectorDrawables.useSupportLibrary = true
2424
multiDexEnabled true
@@ -92,20 +92,20 @@ repositories {
9292
}
9393

9494
dependencies {
95-
def lifecycle_version = "2.1.0-alpha03"
95+
def lifecycle_version = "2.1.0-alpha04"
9696
def koin_version = "1.0.2"
9797
def roomVersion = "2.1.0-alpha06"
9898
def ktx_version = "1.0.0"
9999
def ktx2_version = "2.0.0"
100-
def nav_version = "2.1.0-alpha01"
100+
def nav_version = "2.1.0-alpha02"
101101
def anko_version = "0.10.8"
102102

103103
implementation fileTree(dir: 'libs', include: ['*.jar'])
104104
implementation 'androidx.multidex:multidex:2.0.1'
105-
implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'
106-
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3'
105+
implementation 'androidx.appcompat:appcompat:1.1.0-alpha04'
106+
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha4'
107107
implementation 'androidx.cardview:cardview:1.0.0'
108-
implementation 'androidx.recyclerview:recyclerview:1.1.0-alpha03'
108+
implementation 'androidx.recyclerview:recyclerview:1.1.0-alpha04'
109109
implementation 'com.google.android.material:material:1.1.0-alpha05'
110110
implementation "androidx.browser:browser:1.0.0"
111111
implementation 'androidx.exifinterface:exifinterface:1.0.0'
@@ -142,7 +142,7 @@ dependencies {
142142

143143
implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.9.8"
144144
implementation 'com.github.jasminb:jsonapi-converter:0.9'
145-
implementation 'com.squareup.okhttp3:logging-interceptor:3.14.0'
145+
implementation 'com.squareup.okhttp3:logging-interceptor:3.14.1'
146146
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
147147
implementation 'com.squareup.retrofit2:converter-jackson:2.5.0'
148148

@@ -158,7 +158,7 @@ dependencies {
158158
implementation 'com.squareup.picasso:picasso:2.71828'
159159

160160
// Stripe
161-
implementation 'com.stripe:stripe-android:8.5.0'
161+
implementation 'com.stripe:stripe-android:8.7.0'
162162

163163
// QR Code
164164
implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
@@ -169,6 +169,7 @@ dependencies {
169169

170170
//Anko
171171
implementation "org.jetbrains.anko:anko-commons:$anko_version"
172+
implementation "org.jetbrains.anko:anko-design:$anko_version"
172173

173174
// Stetho
174175
debugImplementation 'com.facebook.stetho:stetho:1.5.1'
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.fossasia.openevent.general.auth
2+
3+
import android.app.Activity
4+
5+
object SmartAuthUtil {
6+
fun getCredentialsClient(activity: Activity): Any {
7+
return Unit
8+
}
9+
10+
fun handleResolvableApiException(rae: Any, activity: Activity, value: Any) {
11+
}
12+
fun getEmailAddressFromIntent(intent: Any?): String? {
13+
return null
14+
}
15+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package org.fossasia.openevent.general.auth
2+
3+
import androidx.lifecycle.LiveData
4+
import androidx.lifecycle.MutableLiveData
5+
import androidx.lifecycle.ViewModel
6+
7+
const val RC_CREDENTIALS_READ = 2
8+
class SmartAuthViewModel : ViewModel() {
9+
10+
val mutableId = MutableLiveData<String>()
11+
val id: LiveData<String> = mutableId
12+
private val mutablePassword = MutableLiveData<String>()
13+
val password: LiveData<String> = mutablePassword
14+
private val mutableProgress = MutableLiveData<Boolean>()
15+
val progress: LiveData<Boolean> = mutableProgress
16+
private val mutableApiExceptionRequestCodePair = MutableLiveData<Pair<Any, Any>>()
17+
val apiExceptionCodePair: LiveData<Pair<Any, Any>> = mutableApiExceptionRequestCodePair
18+
19+
fun requestCredentials(any: Any) {
20+
return
21+
}
22+
23+
fun saveCredential(any1: Any, any2: Any, any3: Any) {
24+
return
25+
}
26+
}

app/src/fdroid/java/org/fossasia/openevent/general/search/SmartAuthViewModel.kt

Lines changed: 0 additions & 35 deletions
This file was deleted.

app/src/main/AndroidManifest.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,14 @@
2727
<meta-data
2828
android:name="com.stripe.android.API_KEY"
2929
android:value="${STRIPE_API_TOKEN}"/>
30+
<provider
31+
android:name="androidx.core.content.FileProvider"
32+
android:authorities="${applicationId}.provider"
33+
android:exported="false"
34+
android:grantUriPermissions="true">
35+
<meta-data
36+
android:name="android.support.FILE_PROVIDER_PATHS"
37+
android:resource="@xml/file_provider"/>
38+
</provider>
3039
</application>
3140
</manifest>

app/src/main/java/org/fossasia/openevent/general/MainActivity.kt

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,30 @@
11
package org.fossasia.openevent.general
22

3+
import android.app.Activity
34
import android.content.Intent
45
import android.os.Bundle
56
import androidx.appcompat.app.AppCompatActivity
67
import androidx.navigation.NavController
78
import androidx.navigation.fragment.NavHostFragment
89
import androidx.navigation.ui.NavigationUI.setupWithNavController
9-
import com.google.android.material.snackbar.Snackbar
1010
import kotlinx.android.synthetic.main.activity_main.navigation
1111
import kotlinx.android.synthetic.main.activity_main.navigationAuth
1212
import kotlinx.android.synthetic.main.activity_main.mainFragmentCoordinatorLayout
1313
import org.fossasia.openevent.general.auth.EditProfileFragment
14-
import org.fossasia.openevent.general.search.RC_CREDENTIALS_READ
15-
import org.fossasia.openevent.general.search.RC_CREDENTIALS_SAVE
16-
import org.fossasia.openevent.general.search.SmartAuthViewModel
14+
import org.fossasia.openevent.general.auth.RC_CREDENTIALS_READ
15+
import org.fossasia.openevent.general.auth.SmartAuthViewModel
16+
import org.fossasia.openevent.general.auth.SmartAuthUtil
1717
import org.fossasia.openevent.general.utils.Utils.navAnimGone
1818
import org.fossasia.openevent.general.utils.Utils.navAnimVisible
19+
import org.jetbrains.anko.design.snackbar
20+
import org.koin.androidx.viewmodel.ext.android.viewModel
21+
22+
const val PLAY_STORE_BUILD_FLAVOR = "playStore"
1923

2024
class MainActivity : AppCompatActivity() {
2125
private lateinit var navController: NavController
2226
private var currentFragmentId: Int = 0
27+
private val smartAuthViewModel by viewModel<SmartAuthViewModel>()
2328

2429
override fun onCreate(savedInstanceState: Bundle?) {
2530
setTheme(R.style.AppTheme)
@@ -71,9 +76,7 @@ class MainActivity : AppCompatActivity() {
7176
R.id.loginFragment,
7277
R.id.signUpFragment -> {
7378
navController.popBackStack(R.id.eventsFragment, false)
74-
Snackbar.make(
75-
mainFragmentCoordinatorLayout, R.string.sign_in_canceled, Snackbar.LENGTH_SHORT
76-
).show()
79+
mainFragmentCoordinatorLayout.snackbar(R.string.sign_in_canceled)
7780
}
7881
R.id.orderCompletedFragment -> navController.popBackStack(R.id.eventDetailsFragment, false)
7982
R.id.welcomeFragment -> finish()
@@ -95,10 +98,20 @@ class MainActivity : AppCompatActivity() {
9598
}
9699

97100
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
98-
if (requestCode == RC_CREDENTIALS_READ || requestCode == RC_CREDENTIALS_SAVE)
99-
SmartAuthViewModel().onActivityResult(requestCode, resultCode, data, this)
100-
else
101+
102+
if (BuildConfig.FLAVOR == PLAY_STORE_BUILD_FLAVOR && requestCode == RC_CREDENTIALS_READ) {
103+
if (resultCode == Activity.RESULT_OK) {
104+
// Fill in the email field in LoginFragment
105+
val email = SmartAuthUtil.getEmailAddressFromIntent(data)
106+
if (email != null) {
107+
smartAuthViewModel.apply {
108+
mutableId.value = email
109+
}
110+
}
111+
}
112+
} else {
101113
super.onActivityResult(requestCode, resultCode, data)
114+
}
102115
}
103116
}
104117

app/src/main/java/org/fossasia/openevent/general/about/AboutEventFragment.kt

Lines changed: 21 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6,42 +6,37 @@ import android.view.MenuItem
66
import android.view.View
77
import android.view.ViewGroup
88
import androidx.core.view.isVisible
9-
import androidx.appcompat.app.AppCompatActivity
109
import androidx.fragment.app.Fragment
1110
import androidx.lifecycle.Observer
1211
import androidx.navigation.fragment.navArgs
1312
import com.google.android.material.appbar.AppBarLayout
14-
import com.google.android.material.snackbar.Snackbar
13+
import com.squareup.picasso.Picasso
1514
import kotlinx.android.synthetic.main.fragment_about_event.view.appBar
1615
import kotlinx.android.synthetic.main.fragment_about_event.view.progressBarAbout
1716
import kotlinx.android.synthetic.main.fragment_about_event.view.aboutEventContent
1817
import kotlinx.android.synthetic.main.fragment_about_event.view.aboutEventDetails
1918
import kotlinx.android.synthetic.main.fragment_about_event.view.eventName
2019
import kotlinx.android.synthetic.main.fragment_about_event.view.detailsHeader
21-
import kotlinx.android.synthetic.main.fragment_about_event.view.aboutEventCollapsingLayout
20+
import kotlinx.android.synthetic.main.fragment_about_event.view.aboutEventImage
2221
import org.fossasia.openevent.general.R
2322
import org.fossasia.openevent.general.event.Event
2423
import org.fossasia.openevent.general.event.EventUtils
2524
import org.fossasia.openevent.general.utils.extensions.nonNull
2625
import org.fossasia.openevent.general.utils.stripHtml
2726
import org.koin.androidx.viewmodel.ext.android.viewModel
27+
import org.fossasia.openevent.general.utils.Utils.setToolbar
28+
import org.jetbrains.anko.design.snackbar
2829

29-
class AboutEventFragment : Fragment(), AppBarLayout.OnOffsetChangedListener {
30+
class AboutEventFragment : Fragment() {
3031
private lateinit var rootView: View
3132
private val aboutEventViewModel by viewModel<AboutEventViewModel>()
32-
private var isHideToolbarView: Boolean = false
3333
private lateinit var eventExtra: Event
34-
private var title: String = ""
3534
private val safeArgs: AboutEventFragmentArgs by navArgs()
3635

3736
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
3837
rootView = layoutInflater.inflate(R.layout.fragment_about_event, container, false)
3938

40-
val thisActivity = activity
41-
if (thisActivity is AppCompatActivity) {
42-
thisActivity.supportActionBar?.title = ""
43-
thisActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true)
44-
}
39+
setToolbar(activity)
4540
setHasOptionsMenu(true)
4641

4742
aboutEventViewModel.event
@@ -50,12 +45,10 @@ class AboutEventFragment : Fragment(), AppBarLayout.OnOffsetChangedListener {
5045
loadEvent(it)
5146
})
5247

53-
rootView.appBar.addOnOffsetChangedListener(this)
54-
5548
aboutEventViewModel.error
5649
.nonNull()
5750
.observe(viewLifecycleOwner, Observer {
58-
Snackbar.make(rootView, it, Snackbar.LENGTH_SHORT).show()
51+
rootView.snackbar(it)
5952
})
6053

6154
aboutEventViewModel.progressAboutEvent
@@ -71,30 +64,26 @@ class AboutEventFragment : Fragment(), AppBarLayout.OnOffsetChangedListener {
7164

7265
private fun loadEvent(event: Event) {
7366
eventExtra = event
74-
title = eventExtra.name
7567
rootView.aboutEventContent.text = event.description?.stripHtml()
7668
val startsAt = EventUtils.getEventDateTime(event.startsAt, event.timezone)
7769
val endsAt = EventUtils.getEventDateTime(event.endsAt, event.timezone)
70+
7871
rootView.aboutEventDetails.text = EventUtils.getFormattedDateTimeRangeBulleted(startsAt, endsAt)
7972
rootView.eventName.text = event.name
80-
}
73+
Picasso.get()
74+
.load(event.originalImageUrl)
75+
.placeholder(R.drawable.header)
76+
.into(rootView.aboutEventImage)
8177

82-
override fun onOffsetChanged(appBarLayout: AppBarLayout, verticalOffset: Int) {
83-
val maxScroll = appBarLayout.totalScrollRange
84-
val percentage = Math.abs(verticalOffset).toFloat() / maxScroll.toFloat()
85-
86-
if (percentage == 1f && isHideToolbarView) {
87-
// Collapsed
88-
rootView.detailsHeader.visibility = View.GONE
89-
rootView.aboutEventCollapsingLayout.title = title
90-
isHideToolbarView = !isHideToolbarView
91-
}
92-
if (percentage < 1f && !isHideToolbarView) {
93-
// Not Collapsed
94-
rootView.detailsHeader.visibility = View.VISIBLE
95-
rootView.aboutEventCollapsingLayout.title = " "
96-
isHideToolbarView = !isHideToolbarView
97-
}
78+
rootView.appBar.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { appBarLayout, offset ->
79+
if (Math.abs(offset) == appBarLayout.getTotalScrollRange()) {
80+
rootView.detailsHeader.isVisible = false
81+
setToolbar(activity, event.name)
82+
} else {
83+
rootView.detailsHeader.isVisible = true
84+
setToolbar(activity)
85+
}
86+
})
9887
}
9988

10089
override fun onOptionsItemSelected(item: MenuItem): Boolean {

app/src/main/java/org/fossasia/openevent/general/about/AboutEventViewModel.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@ import androidx.lifecycle.ViewModel
66
import io.reactivex.android.schedulers.AndroidSchedulers
77
import io.reactivex.disposables.CompositeDisposable
88
import io.reactivex.schedulers.Schedulers
9+
import org.fossasia.openevent.general.R
910
import org.fossasia.openevent.general.common.SingleLiveEvent
11+
import org.fossasia.openevent.general.data.Resource
1012
import org.fossasia.openevent.general.event.Event
1113
import org.fossasia.openevent.general.event.EventService
1214
import timber.log.Timber
1315

14-
class AboutEventViewModel(private val eventService: EventService) : ViewModel() {
16+
class AboutEventViewModel(private val eventService: EventService, private val resource: Resource) : ViewModel() {
1517

1618
private val compositeDisposable = CompositeDisposable()
1719

@@ -24,7 +26,7 @@ class AboutEventViewModel(private val eventService: EventService) : ViewModel()
2426

2527
fun loadEvent(id: Long) {
2628
if (id.equals(-1)) {
27-
mutableError.value = "Error fetching event"
29+
mutableError.value = Resource().getString(R.string.error_fetching_event_message)
2830
return
2931
}
3032
compositeDisposable.add(eventService.getEvent(id)
@@ -37,7 +39,7 @@ class AboutEventViewModel(private val eventService: EventService) : ViewModel()
3739
}.subscribe({ eventList ->
3840
mutableEvent.value = eventList
3941
}, {
40-
mutableError.value = "Error fetching event"
42+
mutableError.value = resource.getString(R.string.error_fetching_event_message)
4143
Timber.e(it, "Error fetching event %d", id)
4244
})
4345
)

0 commit comments

Comments
 (0)