1
0
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:
Tom Hacohen 2019-02-13 12:58:52 +00:00
parent a43d0fceb8
commit e44c4a394c
4 changed files with 39 additions and 7 deletions

View File

@ -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 {

View File

@ -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
}

View File

@ -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()
}

View 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>