Skip to content

Commit c99b5c1

Browse files
authored
Merge pull request #10537 from nextcloud/followUpSameName
Check empty/same name on creating text files
2 parents 1194a5c + db490b2 commit c99b5c1

File tree

1 file changed

+19
-24
lines changed

1 file changed

+19
-24
lines changed

app/src/main/java/com/owncloud/android/ui/dialog/ChooseTemplateDialogFragment.kt

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ import javax.inject.Inject
7070
*/
7171
class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, TemplateAdapter.ClickListener, Injectable {
7272

73+
private lateinit var fileNames: List<String>
74+
7375
@Inject
7476
lateinit var clientFactory: ClientFactory
7577

@@ -116,6 +118,7 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem
116118
)
117119
button.setOnClickListener(this)
118120
button.isEnabled = false
121+
button.isClickable = false
119122

120123
positiveButton = button
121124
checkEnablingCreateButton()
@@ -133,7 +136,7 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem
133136
else -> savedInstanceState.getString(ARG_HEADLINE)
134137
}
135138

136-
val fileNames = fileDataStorageManager.getFolderContent(parentFolder, false).map { it.fileName }
139+
fileNames = fileDataStorageManager.getFolderContent(parentFolder, false).map { it.fileName }
137140

138141
// Inflate the layout for the dialog
139142
val inflater = requireActivity().layoutInflater
@@ -147,15 +150,12 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem
147150
themeColorUtils.primaryColor(context),
148151
themeColorUtils.primaryAccentColor(context)
149152
)
150-
binding.filename.setOnKeyListener { _, _, _ ->
151-
checkEnablingCreateButton()
152-
false
153-
}
153+
154154
binding.filename.addTextChangedListener(object : TextWatcher {
155155
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) = Unit
156156

157157
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
158-
checkExistingFilename(fileNames)
158+
// not needed
159159
}
160160

161161
override fun afterTextChanged(s: Editable) {
@@ -259,26 +259,21 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem
259259
private fun checkEnablingCreateButton() {
260260
if (positiveButton != null) {
261261
val selectedTemplate = adapter!!.selectedTemplate
262-
val name = binding.filename.text.toString()
263-
positiveButton!!.isEnabled = selectedTemplate != null && name.isNotEmpty() &&
264-
!name.equals(DOT + selectedTemplate.extension, ignoreCase = true)
265-
}
266-
}
262+
val name = binding.filename.text.toString().trim()
263+
val isNameEmpty = name.isEmpty() || name.equals(DOT + selectedTemplate.extension, ignoreCase = true)
264+
val state = selectedTemplate != null && !isNameEmpty && !fileNames.contains(name)
267265

268-
private fun checkExistingFilename(fileNames: List<String>) {
269-
var newFileName = ""
270-
if (binding.filename.text != null) {
271-
newFileName = binding.filename.text.toString().trim()
272-
}
266+
positiveButton?.isEnabled = state
267+
positiveButton?.isClickable = state
268+
binding.filenameContainer.isErrorEnabled = !state
273269

274-
if (fileNames.contains(newFileName)) {
275-
binding.filenameContainer.error = getText(R.string.file_already_exists)
276-
positiveButton?.isEnabled = false
277-
} else if (binding.filenameContainer.error != null) {
278-
binding.filenameContainer.error = null
279-
// Called to remove extra padding
280-
binding.filenameContainer.isErrorEnabled = false
281-
positiveButton?.isEnabled = true
270+
if (!state) {
271+
if (isNameEmpty) {
272+
binding.filenameContainer.error = getText(R.string.filename_empty)
273+
} else {
274+
binding.filenameContainer.error = getText(R.string.file_already_exists)
275+
}
276+
}
282277
}
283278
}
284279

0 commit comments

Comments
 (0)