Skip to content

Commit

Permalink
enterprises: smoother sync (fixes #3184) (#3186)
Browse files Browse the repository at this point in the history
Co-authored-by: dogi <[email protected]>
  • Loading branch information
Okuro3499 and dogi authored Mar 4, 2024
1 parent 86e7cdf commit ef459e4
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 56 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ android {
applicationId "org.ole.planet.myplanet"
minSdkVersion 21
targetSdkVersion 34
versionCode 1388
versionName "0.13.88"
versionCode 1389
versionName "0.13.89"
ndkVersion '21.3.6528147'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
Expand Down
31 changes: 14 additions & 17 deletions app/src/main/java/org/ole/planet/myplanet/base/BaseNewsFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,6 @@ import java.io.File

@RequiresApi(api = Build.VERSION_CODES.O)
abstract class BaseNewsFragment : BaseContainerFragment(), OnNewsItemClickListener {
// override var mRealm: Realm? = null
// override var homeItemClickListener: OnHomeItemClickListener? = null
// override var profileDbHandler: UserProfileDbHandler? = null
lateinit var imageList: RealmList<String>
@JvmField
protected var llImage: LinearLayout? = null
Expand All @@ -56,7 +53,7 @@ abstract class BaseNewsFragment : BaseContainerFragment(), OnNewsItemClickListen
if (result.resultCode == Activity.RESULT_OK) {
val data = result.data
var path: String
val url: Uri? = data!!.data
val url: Uri? = data?.data
path = getRealPathFromURI(requireActivity(), url)
if (TextUtils.isEmpty(path)) {
path = getImagePath(url)
Expand All @@ -66,16 +63,16 @@ abstract class BaseNewsFragment : BaseContainerFragment(), OnNewsItemClickListen
`object`.addProperty("fileName", getFileNameFromUrl(path))
imageList.add(Gson().toJson(`object`))
try {
llImage!!.removeAllViews()
llImage!!.visibility = View.VISIBLE
llImage?.removeAllViews()
llImage?.visibility = View.VISIBLE
for (img in imageList) {
val ob = Gson().fromJson(img, JsonObject::class.java)
val inflater = LayoutInflater.from(activity).inflate(R.layout.image_thumb, null)
val imgView = inflater.findViewById<ImageView>(R.id.thumb)
Glide.with(requireActivity()).load(File(getString("imageUrl", ob))).into(imgView)
llImage!!.addView(inflater)
llImage?.addView(inflater)
}
if (result.resultCode == 102) adapterNews!!.setImageList(imageList)
if (result.resultCode == 102) adapterNews?.setImageList(imageList)
} catch (e: Exception) {
e.printStackTrace()
}
Expand Down Expand Up @@ -103,19 +100,19 @@ abstract class BaseNewsFragment : BaseContainerFragment(), OnNewsItemClickListen
}

abstract fun setData(list: List<RealmNews?>?)
fun showNoData(v: View?, count: Int) {
BaseRecyclerFragment.showNoData(v, count)
fun showNoData(v: View?, count: Int?) {
count?.let { BaseRecyclerFragment.showNoData(v, it) }
}

private fun getImagePath(uri: Uri?): String {
var cursor = requireContext().contentResolver.query(uri!!, null, null, null, null)
cursor!!.moveToFirst()
var document_id = cursor.getString(0)
document_id = document_id.substring(document_id.lastIndexOf(":") + 1)
cursor.close()
var cursor = uri?.let { requireContext().contentResolver.query(it, null, null, null, null) }
cursor?.moveToFirst()
var document_id = cursor?.getString(0)
document_id = document_id?.substring(document_id.lastIndexOf(":") + 1)
cursor?.close()
cursor = requireContext().contentResolver.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, MediaStore.Images.Media._ID + " = ? ", arrayOf(document_id), null)
cursor!!.moveToFirst()
val path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA))
cursor?.moveToFirst()
val path = cursor!!.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA))
cursor.close()
return path
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,45 +26,50 @@ import java.util.UUID

class FinanceFragment : BaseTeamFragment() {
private lateinit var fragmentFinanceBinding: FragmentFinanceBinding
private var addTransactionBinding: AddTransactionBinding? = null
private lateinit var addTransactionBinding: AddTransactionBinding
private lateinit var fRealm: Realm
private var adapterFinance: AdapterFinance? = null
var date: Calendar? = null
var list: RealmResults<RealmMyTeam>? = null
private var isAsc = false

var listener =
android.app.DatePickerDialog.OnDateSetListener { _: DatePicker?, year: Int, monthOfYear: Int, dayOfMonth: Int ->
date = Calendar.getInstance()
date!!.set(Calendar.YEAR, year)
date!!.set(Calendar.MONTH, monthOfYear)
date!!.set(Calendar.DAY_OF_MONTH, dayOfMonth)
if (date != null) addTransactionBinding!!.tvSelectDate.text = formatDateTZ(
date!!.timeInMillis
)
date?.set(Calendar.YEAR, year)
date?.set(Calendar.MONTH, monthOfYear)
date?.set(Calendar.DAY_OF_MONTH, dayOfMonth)
if (date != null) {
addTransactionBinding.tvSelectDate.text = date?.timeInMillis?.let { formatDateTZ(it) }
}
}

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
fragmentFinanceBinding = FragmentFinanceBinding.inflate(inflater, container, false)
fRealm = DatabaseService(requireActivity()).realmInstance
date = Calendar.getInstance()
fragmentFinanceBinding.btnFilter.setOnClickListener { showDatePickerDialog() }
list = fRealm.where(RealmMyTeam::class.java).notEqualTo("status", "archived")
.equalTo("teamId", teamId).equalTo("docType", "transaction")
.sort("date", Sort.DESCENDING).findAllAsync()

list?.addChangeListener { results ->
updatedFinanceList(results)
}

fragmentFinanceBinding.llDate.setOnClickListener {
fragmentFinanceBinding.imgDate.rotation = fragmentFinanceBinding.imgDate.rotation + 180
fragmentFinanceBinding.imgDate.rotation += 180
list = fRealm.where(RealmMyTeam::class.java).notEqualTo("status", "archived")
.equalTo("teamId", teamId).equalTo("docType", "transaction")
.sort("date", if (isAsc) Sort.DESCENDING else Sort.ASCENDING).findAll()
adapterFinance = AdapterFinance(requireActivity(), list as RealmResults<RealmMyTeam>)
fragmentFinanceBinding.rvFinance.adapter = adapterFinance
updatedFinanceList(list as RealmResults<RealmMyTeam>)
isAsc = !isAsc
}
fragmentFinanceBinding.btnReset.setOnClickListener {
list = fRealm.where(RealmMyTeam::class.java).notEqualTo("status", "archived")
.equalTo("teamId", teamId).equalTo("docType", "transaction")
.sort("date", Sort.DESCENDING).findAll()
adapterFinance = AdapterFinance(requireActivity(), list as RealmResults<RealmMyTeam>)
fragmentFinanceBinding.rvFinance.layoutManager = LinearLayoutManager(activity)
fragmentFinanceBinding.rvFinance.adapter = adapterFinance
calculateTotal(list)
updatedFinanceList(list as RealmResults<RealmMyTeam>)
}
return fragmentFinanceBinding.root
}
Expand All @@ -81,17 +86,15 @@ class FinanceFragment : BaseTeamFragment() {
.equalTo("docType", "transaction")
.between("date", start.timeInMillis, end.timeInMillis).sort("date", Sort.DESCENDING)
.findAll()
adapterFinance = AdapterFinance(requireActivity(), list as RealmResults<RealmMyTeam>)
fragmentFinanceBinding.rvFinance.adapter = adapterFinance
calculateTotal(list)
updatedFinanceList(list as RealmResults<RealmMyTeam>)
}, now[Calendar.YEAR], now[Calendar.MONTH], now[Calendar.DAY_OF_MONTH]).show(
requireActivity().fragmentManager, ""
)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
if (user!!.isManager() || user!!.isLeader()) {
if (user?.isManager() == true || user?.isLeader() == true) {
fragmentFinanceBinding.addTransaction.visibility = View.VISIBLE
} else {
fragmentFinanceBinding.addTransaction.visibility = View.GONE
Expand All @@ -100,18 +103,15 @@ class FinanceFragment : BaseTeamFragment() {
list = fRealm.where(RealmMyTeam::class.java).notEqualTo("status", "archived")
.equalTo("teamId", teamId).equalTo("docType", "transaction")
.sort("date", Sort.DESCENDING).findAll()
adapterFinance = AdapterFinance(requireActivity(), list as RealmResults<RealmMyTeam>)
fragmentFinanceBinding.rvFinance.layoutManager = LinearLayoutManager(activity)
fragmentFinanceBinding.rvFinance.adapter = adapterFinance
calculateTotal(list)
showNoData(fragmentFinanceBinding.tvNodata, list!!.size)
updatedFinanceList(list as RealmResults<RealmMyTeam>)
showNoData(fragmentFinanceBinding.tvNodata, list?.size)
}

private fun calculateTotal(list: List<RealmMyTeam>?) {
var debit = 0
var credit = 0
for (team in list!!) {
if ("credit".equals(team.type!!.lowercase(Locale.getDefault()), ignoreCase = true)) {
if ("credit".equals(team.type?.lowercase(Locale.getDefault()), ignoreCase = true)) {
credit += team.amount
} else {
debit += team.amount
Expand All @@ -127,10 +127,10 @@ class FinanceFragment : BaseTeamFragment() {
private fun addTransaction() {
AlertDialog.Builder(requireActivity()).setView(setUpAlertUi()).setTitle(R.string.add_transaction)
.setPositiveButton("Submit") { _: DialogInterface?, _: Int ->
val type = addTransactionBinding!!.spnType.selectedItem.toString()
val type = addTransactionBinding.spnType.selectedItem.toString()
Utilities.log("$type type")
val note = addTransactionBinding!!.tlNote.editText!!.text.toString().trim { it <= ' ' }
val amount = addTransactionBinding!!.tlAmount.editText!!.text.toString().trim { it <= ' ' }
val note = addTransactionBinding.tlNote.editText!!.text.toString().trim { it <= ' ' }
val amount = addTransactionBinding.tlAmount.editText!!.text.toString().trim { it <= ' ' }
if (note.isEmpty()) {
Utilities.toast(activity, getString(R.string.note_is_required))
} else if (amount.isEmpty()) {
Expand All @@ -142,9 +142,8 @@ class FinanceFragment : BaseTeamFragment() {
createTransactionObject(realm, type, note, amount, date!!)
}, Realm.Transaction.OnSuccess {
Utilities.toast(activity, getString(R.string.transaction_added))
adapterFinance!!.notifyDataSetChanged()
showNoData(fragmentFinanceBinding.tvNodata, adapterFinance!!.itemCount)
calculateTotal(list)
adapterFinance?.notifyDataSetChanged()
showNoData(fragmentFinanceBinding.tvNodata, adapterFinance?.itemCount)
})
}
}.setNegativeButton("Cancel", null).show()
Expand All @@ -159,18 +158,28 @@ class FinanceFragment : BaseTeamFragment() {
team.description = note
team.teamId = teamId
team.amount = amount.toInt()
team.parentCode = user!!.parentCode
team.teamPlanetCode = user!!.planetCode
team.parentCode = user?.parentCode
team.teamPlanetCode = user?.planetCode
team.teamType = "sync"
team.docType = "transaction"
team.updated = true
}

private fun setUpAlertUi(): View {
addTransactionBinding = AddTransactionBinding.inflate(LayoutInflater.from(activity))
addTransactionBinding!!.tvSelectDate.setOnClickListener {
addTransactionBinding.tvSelectDate.setOnClickListener {
android.app.DatePickerDialog(requireActivity(), listener, date!![Calendar.YEAR], date!![Calendar.MONTH], date!![Calendar.DAY_OF_MONTH]).show()
}
return addTransactionBinding!!.root
return addTransactionBinding.root
}

private fun updatedFinanceList(results: RealmResults<RealmMyTeam>) {
activity?.runOnUiThread {
adapterFinance = AdapterFinance(requireActivity(), results)
fragmentFinanceBinding.rvFinance.layoutManager = LinearLayoutManager(activity)
fragmentFinanceBinding.rvFinance.adapter = adapterFinance
adapterFinance?.notifyDataSetChanged()
calculateTotal(results)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,14 @@ class ReportsFragment : BaseTeamFragment() {
}

cancel.setOnClickListener { dialog.dismiss() }

list = mRealm.where(RealmMyTeam::class.java).equalTo("teamId", teamId)
.equalTo("docType", "report")
.sort("date", Sort.DESCENDING).findAllAsync()

list?.addChangeListener { results ->
updatedReportsList(results)
}
}

return fragmentReportsBinding.root
Expand All @@ -140,9 +148,15 @@ class ReportsFragment : BaseTeamFragment() {
list = mRealm.where(RealmMyTeam::class.java).equalTo("teamId", teamId)
.equalTo("docType", "report")
.sort("date", Sort.DESCENDING).findAll()
updatedReportsList(list as RealmResults<RealmMyTeam>)
}

adapterReports = AdapterReports(list as RealmResults<RealmMyTeam>)
fragmentReportsBinding.rvReports.layoutManager = LinearLayoutManager(activity)
fragmentReportsBinding.rvReports.adapter = adapterReports
private fun updatedReportsList(results: RealmResults<RealmMyTeam>) {
activity?.runOnUiThread {
adapterReports = AdapterReports(results)
fragmentReportsBinding.rvReports.layoutManager = LinearLayoutManager(activity)
fragmentReportsBinding.rvReports.adapter = adapterReports
adapterReports.notifyDataSetChanged()
}
}
}

0 comments on commit ef459e4

Please sign in to comment.