@@ -10,6 +10,7 @@ import org.fossasia.openevent.general.utils.ImageUtils.decodeBitmap
10
10
import android.os.Bundle
11
11
import android.provider.MediaStore
12
12
import android.util.Base64
13
+ import android.util.Patterns
13
14
import android.view.LayoutInflater
14
15
import android.view.View
15
16
import android.view.ViewGroup
@@ -21,11 +22,16 @@ import androidx.fragment.app.Fragment
21
22
import androidx.lifecycle.Observer
22
23
import androidx.navigation.Navigation.findNavController
23
24
import androidx.navigation.fragment.navArgs
25
+ import com.google.android.material.textfield.TextInputEditText
24
26
import com.squareup.picasso.Picasso
25
27
import kotlinx.android.synthetic.main.fragment_edit_profile.view.updateButton
26
28
import kotlinx.android.synthetic.main.fragment_edit_profile.view.toolbar
27
29
import kotlinx.android.synthetic.main.fragment_edit_profile.view.firstName
28
30
import kotlinx.android.synthetic.main.fragment_edit_profile.view.details
31
+ import kotlinx.android.synthetic.main.fragment_edit_profile.view.facebook
32
+ import kotlinx.android.synthetic.main.fragment_edit_profile.view.twitter
33
+ import kotlinx.android.synthetic.main.fragment_edit_profile.view.instagram
34
+ import kotlinx.android.synthetic.main.fragment_edit_profile.view.phone
29
35
import com.squareup.picasso.MemoryPolicy
30
36
import kotlinx.android.synthetic.main.dialog_edit_profile_image.view.editImage
31
37
import kotlinx.android.synthetic.main.dialog_edit_profile_image.view.takeImage
@@ -54,6 +60,7 @@ import java.io.FileOutputStream
54
60
import java.io.IOException
55
61
import java.io.FileNotFoundException
56
62
import org.fossasia.openevent.general.utils.Utils.setToolbar
63
+ import org.fossasia.openevent.general.utils.emptyToNull
57
64
import org.fossasia.openevent.general.utils.setRequired
58
65
import org.jetbrains.anko.design.snackbar
59
66
@@ -77,6 +84,10 @@ class EditProfileFragment : Fragment(), ComplexBackPressFragment {
77
84
private lateinit var userLastName: String
78
85
private lateinit var userDetails: String
79
86
private lateinit var userAvatar: String
87
+ private lateinit var userPhone: String
88
+ private lateinit var userFacebook: String
89
+ private lateinit var userTwitter: String
90
+ private lateinit var userInstagram: String
80
91
81
92
override fun onCreateView (
82
93
inflater : LayoutInflater ,
@@ -125,9 +136,8 @@ class EditProfileFragment : Fragment(), ComplexBackPressFragment {
125
136
126
137
rootView.updateButton.setOnClickListener {
127
138
hideSoftKeyboard(context, rootView)
128
- if (isValidUsername()) {
129
- editProfileViewModel.updateProfile(rootView.firstName.text.toString(),
130
- rootView.lastName.text.toString(), rootView.details.text.toString())
139
+ if (isValidInput()) {
140
+ updateUser()
131
141
} else {
132
142
rootView.snackbar(getString(R .string.fill_required_fields_message))
133
143
}
@@ -176,7 +186,7 @@ class EditProfileFragment : Fragment(), ComplexBackPressFragment {
176
186
}
177
187
}
178
188
179
- private fun isValidUsername (): Boolean {
189
+ private fun isValidInput (): Boolean {
180
190
var valid = true
181
191
if (rootView.firstName.text.isNullOrBlank()) {
182
192
rootView.firstName.error = getString(R .string.empty_field_error_message)
@@ -186,6 +196,18 @@ class EditProfileFragment : Fragment(), ComplexBackPressFragment {
186
196
rootView.lastName.error = getString(R .string.empty_field_error_message)
187
197
valid = false
188
198
}
199
+ if (! rootView.instagram.text.isNullOrEmpty() && ! Patterns .WEB_URL .matcher(rootView.instagram.text).matches()) {
200
+ rootView.instagram.error = getString(R .string.invalid_url_message)
201
+ valid = false
202
+ }
203
+ if (! rootView.facebook.text.isNullOrEmpty() && ! Patterns .WEB_URL .matcher(rootView.facebook.text).matches()) {
204
+ rootView.facebook.error = getString(R .string.invalid_url_message)
205
+ valid = false
206
+ }
207
+ if (! rootView.twitter.text.isNullOrEmpty() && ! Patterns .WEB_URL .matcher(rootView.twitter.text).matches()) {
208
+ rootView.twitter.error = getString(R .string.invalid_url_message)
209
+ valid = false
210
+ }
189
211
return valid
190
212
}
191
213
@@ -194,6 +216,11 @@ class EditProfileFragment : Fragment(), ComplexBackPressFragment {
194
216
userLastName = user.lastName.nullToEmpty()
195
217
userDetails = user.details.nullToEmpty()
196
218
userAvatar = user.avatarUrl.nullToEmpty()
219
+ userPhone = user.contact.nullToEmpty()
220
+ userFacebook = user.facebookUrl.nullToEmpty()
221
+ userTwitter = user.twitterUrl.nullToEmpty()
222
+ userInstagram = user.instagramUrl.nullToEmpty()
223
+
197
224
if (safeArgs.croppedImage.isEmpty()) {
198
225
if (userAvatar.isNotEmpty() && ! editProfileViewModel.avatarUpdated) {
199
226
val drawable = requireDrawable(requireContext(), R .drawable.ic_account_circle_grey)
@@ -208,15 +235,17 @@ class EditProfileFragment : Fragment(), ComplexBackPressFragment {
208
235
editProfileViewModel.encodedImage = encodeImage(croppedImage)
209
236
editProfileViewModel.avatarUpdated = true
210
237
}
211
- if (rootView.firstName.text.isNullOrBlank()) {
212
- rootView.firstName.setText(userFirstName)
213
- }
214
- if (rootView.lastName.text.isNullOrBlank()) {
215
- rootView.lastName.setText(userLastName)
216
- }
217
- if (rootView.details.text.isNullOrBlank()) {
218
- rootView.details.setText(userDetails)
219
- }
238
+ setTextIfNull(rootView.firstName, userFirstName)
239
+ setTextIfNull(rootView.lastName, userLastName)
240
+ setTextIfNull(rootView.details, userDetails)
241
+ setTextIfNull(rootView.phone, userPhone)
242
+ setTextIfNull(rootView.facebook, userFacebook)
243
+ setTextIfNull(rootView.twitter, userTwitter)
244
+ setTextIfNull(rootView.instagram, userInstagram)
245
+ }
246
+
247
+ private fun setTextIfNull (input : TextInputEditText , text : String ) {
248
+ if (input.text.isNullOrBlank()) input.setText(text)
220
249
}
221
250
222
251
private fun showEditPhotoDialog () {
@@ -340,8 +369,7 @@ class EditProfileFragment : Fragment(), ComplexBackPressFragment {
340
369
*/
341
370
override fun handleBackPress () {
342
371
val thisActivity = activity
343
- if (! editProfileViewModel.avatarUpdated && rootView.lastName.text.toString() == userLastName &&
344
- rootView.firstName.text.toString() == userFirstName && rootView.details.text.toString() == userDetails) {
372
+ if (noDataChanged()) {
345
373
findNavController(rootView).popBackStack()
346
374
} else {
347
375
hideSoftKeyboard(context, rootView)
@@ -351,13 +379,37 @@ class EditProfileFragment : Fragment(), ComplexBackPressFragment {
351
379
if (thisActivity is MainActivity ) thisActivity.onSuperBackPressed()
352
380
}
353
381
dialog.setPositiveButton(getString(R .string.save)) { _, _ ->
354
- editProfileViewModel.updateProfile(rootView.firstName.text.toString(),
355
- rootView.lastName.text.toString(), rootView.details.text.toString())
356
- }
382
+ if (isValidInput()) {
383
+ updateUser()
384
+ } else {
385
+ rootView.snackbar(getString(R .string.fill_required_fields_message))
386
+ } }
357
387
dialog.create().show()
358
388
}
359
389
}
360
390
391
+ private fun updateUser () {
392
+ val newUser = User (
393
+ id = editProfileViewModel.getId(),
394
+ firstName = rootView.firstName.text.toString(),
395
+ lastName = rootView.lastName.text.toString(),
396
+ details = rootView.details.text.toString(),
397
+ facebookUrl = rootView.facebook.text.toString().emptyToNull(),
398
+ twitterUrl = rootView.twitter.text.toString().emptyToNull(),
399
+ contact = rootView.phone.text.toString().emptyToNull()
400
+ )
401
+ editProfileViewModel.updateProfile(newUser)
402
+ }
403
+
404
+ private fun noDataChanged () = ! editProfileViewModel.avatarUpdated &&
405
+ rootView.lastName.text.toString() == userLastName &&
406
+ rootView.firstName.text.toString() == userFirstName &&
407
+ rootView.details.text.toString() == userDetails &&
408
+ rootView.facebook.text.toString() == userFacebook &&
409
+ rootView.twitter.text.toString() == userTwitter &&
410
+ rootView.instagram.text.toString() == userInstagram &&
411
+ rootView.phone.text.toString() == userPhone
412
+
361
413
override fun onDestroyView () {
362
414
val activity = activity as ? AppCompatActivity
363
415
activity?.supportActionBar?.setDisplayHomeAsUpEnabled(false )
0 commit comments