mirror of
https://github.com/etesync/android
synced 2025-02-02 02:41:31 +00:00
Add the UI to invite read only members to journals.
This commit is contained in:
parent
a43d0fceb8
commit
e44c4a394c
@ -190,15 +190,18 @@ class JournalManager(httpClient: OkHttpClient, remote: HttpUrl) : BaseManager()
|
||||
class Member {
|
||||
val user: String?
|
||||
val key: ByteArray?
|
||||
val readOnly: Boolean
|
||||
|
||||
private constructor() {
|
||||
this.user = null
|
||||
this.key = null
|
||||
this.readOnly = false
|
||||
}
|
||||
|
||||
constructor(user: String, encryptedKey: ByteArray) {
|
||||
constructor(user: String, encryptedKey: ByteArray, readOnly: Boolean = false) {
|
||||
this.user = user
|
||||
this.key = encryptedKey
|
||||
this.readOnly = readOnly
|
||||
}
|
||||
|
||||
internal fun toJson(): String {
|
||||
|
@ -26,12 +26,14 @@ class AddMemberFragment : DialogFragment() {
|
||||
private lateinit var info: CollectionInfo
|
||||
private lateinit var memberEmail: String
|
||||
private lateinit var memberPubKey: ByteArray
|
||||
private var readOnly: Boolean = false
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
account = arguments?.getParcelable(Constants.KEY_ACCOUNT)!!
|
||||
info = arguments?.getSerializable(Constants.KEY_COLLECTION_INFO) as CollectionInfo
|
||||
memberEmail = arguments?.getString(KEY_MEMBER)!!.toLowerCase()
|
||||
readOnly = arguments?.getBoolean(KEY_READ_ONLY)!!
|
||||
ctx = context
|
||||
try {
|
||||
settings = AccountSettings(ctx!!, account)
|
||||
@ -105,7 +107,7 @@ class AddMemberFragment : DialogFragment() {
|
||||
val crypto = Crypto.CryptoManager(info.version, settings!!.password(), info.uid!!)
|
||||
|
||||
val encryptedKey = crypto.getEncryptedKey(settings!!.keyPair!!, memberPubKey)
|
||||
val member = JournalManager.Member(memberEmail, encryptedKey!!)
|
||||
val member = JournalManager.Member(memberEmail, encryptedKey!!, readOnly)
|
||||
journalsManager.addMember(journal, member)
|
||||
return AddResultSecond(null)
|
||||
} catch (e: Exception) {
|
||||
@ -132,13 +134,15 @@ class AddMemberFragment : DialogFragment() {
|
||||
|
||||
companion object {
|
||||
private val KEY_MEMBER = "memberEmail"
|
||||
private val KEY_READ_ONLY = "readOnly"
|
||||
|
||||
fun newInstance(account: Account, info: CollectionInfo, email: String): AddMemberFragment {
|
||||
fun newInstance(account: Account, info: CollectionInfo, email: String, readOnly: Boolean): AddMemberFragment {
|
||||
val frag = AddMemberFragment()
|
||||
val args = Bundle(1)
|
||||
args.putParcelable(Constants.KEY_ACCOUNT, account)
|
||||
args.putSerializable(Constants.KEY_COLLECTION_INFO, info)
|
||||
args.putString(KEY_MEMBER, email)
|
||||
args.putBoolean(KEY_READ_ONLY, readOnly)
|
||||
frag.arguments = args
|
||||
return frag
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import android.os.Bundle
|
||||
import android.support.v7.app.AlertDialog
|
||||
import android.text.InputType
|
||||
import android.view.View
|
||||
import android.widget.CheckBox
|
||||
import android.widget.EditText
|
||||
import android.widget.TextView
|
||||
import com.etesync.syncadapter.App
|
||||
@ -83,17 +84,18 @@ class CollectionMembersActivity : BaseActivity(), Refreshable {
|
||||
}
|
||||
|
||||
fun onAddMemberClicked(v: View) {
|
||||
val input = EditText(this)
|
||||
input.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS
|
||||
val view = View.inflate(this, R.layout.add_member_fragment, null)
|
||||
val dialog = AlertDialog.Builder(this)
|
||||
.setTitle(R.string.collection_members_add)
|
||||
.setIcon(R.drawable.ic_account_add_dark)
|
||||
.setPositiveButton(android.R.string.yes) { _, _ ->
|
||||
val frag = AddMemberFragment.newInstance(account, info, input.text.toString())
|
||||
val input = view.findViewById<EditText>(R.id.username)
|
||||
val readOnly = view.findViewById<CheckBox>(R.id.read_only).isChecked
|
||||
val frag = AddMemberFragment.newInstance(account, info, input.text.toString(), readOnly)
|
||||
frag.show(supportFragmentManager, null)
|
||||
}
|
||||
.setNegativeButton(android.R.string.no) { _, _ -> }
|
||||
dialog.setView(input)
|
||||
dialog.setView(view)
|
||||
dialog.show()
|
||||
}
|
||||
|
||||
|
23
app/src/main/res/layout/add_member_fragment.xml
Normal file
23
app/src/main/res/layout/add_member_fragment.xml
Normal file
@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/username"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/login_email_address"
|
||||
android:inputType="textEmailAddress" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/read_only"
|
||||
android:text="Read only?"
|
||||
style="?android:attr/textAppearanceMedium"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="5dp" />
|
||||
</LinearLayout>
|
Loading…
Reference in New Issue
Block a user