Skip to content

Commit

Permalink
add identity chooser to credentials and improve item metadata display
Browse files Browse the repository at this point in the history
  • Loading branch information
n8fr8 committed Nov 8, 2023
1 parent 9be0f73 commit 15927b7
Show file tree
Hide file tree
Showing 7 changed files with 97 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ public class ProofMode {

public final static String PREF_OPTION_CREDENTIALS = "addCR";

public final static String PREF_CREDENTIALS_PRIMARY = "prefCredsPrimary";


public final static boolean PREF_OPTION_NOTARY_DEFAULT = true;
public final static boolean PREF_OPTION_LOCATION_DEFAULT = false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,11 @@ public void addNotarizationProvider (NotarizationProvider provider) {
}



public void queueMedia (Uri uriMedia, boolean autogen, Date createdAt) {
mExec.submit(() -> {
processUri(uriMedia, autogen, createdAt);
});
}
public String processUri (Uri uriMedia, boolean autogen, Date createdAt) {

LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(mContext.getApplicationContext());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@ package org.witness.proofmode.util

import android.content.Context
import android.net.Uri
import org.json.JSONObject
import org.witness.proofmode.ProofMode
import org.witness.proofmode.crypto.HashUtils
import org.witness.proofmode.service.MediaWatcher
import timber.log.Timber
import java.io.File
import java.io.FileNotFoundException
import java.io.FileReader

class ProofModeUtil {

Expand All @@ -34,19 +36,37 @@ class ProofModeUtil {

fun getProofSummary (proofHash: String, context: Context): String? {

var sb = StringBuffer ()

val fileFolder = MediaWatcher.getHashStorageDir(context, proofHash)
if (fileFolder != null) {
val fileMediaProof = File(fileFolder, proofHash + ProofMode.PROOF_FILE_JSON_TAG)
//generate now?
if (fileMediaProof.exists()) {

var jsonData = FileReader(fileMediaProof).readText()
val jsonObject = JSONObject(jsonData)

var itKeys = jsonObject.keys()
while (itKeys.hasNext())
{
var key = itKeys.next()
var value = jsonObject.getString(key)

if (value?.isNotEmpty() == true) {
sb.append(key)
sb.append(": ")
sb.append(value)
sb.append("\n")
}
}


}

} else null
}

return null
return sb.toString()
}
}
}
2 changes: 1 addition & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
tools:remove="android:maxSdkVersion" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>


<uses-permission android:name="android.permission.GET_ACCOUNTS"/>

<application
android:name=".ProofModeApp"
Expand Down
32 changes: 25 additions & 7 deletions app/src/main/java/org/witness/proofmode/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import org.witness.proofmode.ActivityConstants.EXTRA_FILE_NAME
import org.witness.proofmode.ActivityConstants.EXTRA_SHARE_TEXT
import org.witness.proofmode.ActivityConstants.INTENT_ACTIVITY_ITEMS_SHARED
import org.witness.proofmode.ProofMode.EVENT_PROOF_GENERATED
import org.witness.proofmode.ProofMode.PREF_CREDENTIALS_PRIMARY
import org.witness.proofmode.ProofMode.PREF_OPTION_AI
import org.witness.proofmode.ProofMode.PREF_OPTION_AI_DEFAULT
import org.witness.proofmode.ProofMode.PREF_OPTION_CREDENTIALS
Expand All @@ -47,6 +48,7 @@ import org.witness.proofmode.onboarding.OnboardingActivity
import org.witness.proofmode.service.MediaWatcher
import org.witness.proofmode.util.GPSTracker
import java.io.IOException
import java.net.URLEncoder
import java.util.Date
import java.util.UUID

Expand Down Expand Up @@ -171,15 +173,15 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte
if (uri != null && context != null) {
Activities.addActivity(
Activity(
UUID.randomUUID().toString(), ActivityType.MediaCaptured(
uri.toString(), ActivityType.MediaCaptured(
items = mutableStateListOf(
ProofableItem(UUID.randomUUID().toString(), uri)
)
), Date()
), context
)

MediaWatcher.getInstance(context).processUri(intent.data, true, Date())
MediaWatcher.getInstance(context).queueMedia(intent.data, true, Date())

}
}
Expand Down Expand Up @@ -546,7 +548,7 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte

Activities.addActivity(
Activity(
UUID.randomUUID().toString(), ActivityType.MediaCaptured(
intentShare.data.toString(), ActivityType.MediaImported(
items = mutableStateListOf(
ProofableItem(UUID.randomUUID().toString(), data.data as Uri)
)
Expand Down Expand Up @@ -636,10 +638,26 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte

if (useCredentials) {

intentCam.putExtra(C2paUtils.IDENTITY_NAME_KEY, "0x" + mPgpUtils?.publicKeyString)
var pgpUri =
"0x" + mPgpUtils?.publicKeyFingerprint + "@https://keys.openpgp.org/search?q=" + mPgpUtils?.publicKeyFingerprint
intentCam.putExtra(C2paUtils.IDENTITY_URI_KEY, pgpUri)
val credPrimary = mPrefs.getString(PREF_CREDENTIALS_PRIMARY,"");

if (credPrimary?.isNotEmpty() == true)
{
var displayName = "${credPrimary.replace("@"," at ")}"

intentCam.putExtra(C2paUtils.IDENTITY_NAME_KEY, displayName)

var credUri =
"${URLEncoder.encode(displayName, "UTF-8")}@mailto:${URLEncoder.encode(credPrimary, "UTF-8")}"

intentCam.putExtra(C2paUtils.IDENTITY_URI_KEY, credUri)
}
else {
intentCam.putExtra(C2paUtils.IDENTITY_NAME_KEY, "0x" + mPgpUtils?.publicKeyString)

var pgpUri =
"0x" + mPgpUtils?.publicKeyFingerprint + "@https://keys.openpgp.org/search?q=" + mPgpUtils?.publicKeyFingerprint
intentCam.putExtra(C2paUtils.IDENTITY_URI_KEY, pgpUri)
}

intentCam.putExtra(PREF_OPTION_AI, mPrefs.getBoolean(PREF_OPTION_CREDENTIALS, PREF_OPTION_AI_DEFAULT));
}
Expand Down
29 changes: 28 additions & 1 deletion app/src/main/java/org/witness/proofmode/SettingsActivity.kt
Original file line number Diff line number Diff line change
@@ -1,21 +1,26 @@
package org.witness.proofmode

import android.Manifest
import android.accounts.AccountManager
import android.content.Intent
import android.content.SharedPreferences
import android.os.Build
import android.os.Bundle
import android.view.MenuItem
import android.widget.CheckBox
import android.widget.CompoundButton
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.preference.PreferenceManager
import com.google.android.gms.common.AccountPicker
import com.google.android.gms.common.AccountPicker.AccountChooserOptions
import org.witness.proofmode.PermissionActivity
import org.witness.proofmode.PermissionActivity.Companion.hasPermissions
import org.witness.proofmode.ProofMode.PREF_CREDENTIALS_PRIMARY
import org.witness.proofmode.crypto.pgp.PgpUtils
import org.witness.proofmode.databinding.ActivitySettingsBinding
import org.witness.proofmode.util.GPSTracker


class SettingsActivity : AppCompatActivity() {
private lateinit var mPrefs: SharedPreferences
private val mPgpUtils: PgpUtils? = null
Expand Down Expand Up @@ -118,6 +123,9 @@ class SettingsActivity : AppCompatActivity() {

switchAI.isEnabled = isChecked

if (isChecked)
showIdentityChooser()

updateUI()
}

Expand All @@ -128,6 +136,18 @@ class SettingsActivity : AppCompatActivity() {
}
}

private val REQ_ACCOUNT_CHOOSER = 9999;

private fun showIdentityChooser () {

val intent = AccountPicker.newChooseAccountIntent(
AccountChooserOptions.Builder()
.build()
)

startActivityForResult(intent, REQ_ACCOUNT_CHOOSER)
}

private fun updateUI() {
switchLocation.isChecked =
mPrefs.getBoolean(
Expand Down Expand Up @@ -191,6 +211,13 @@ class SettingsActivity : AppCompatActivity() {
}
updateUI()
}
REQ_ACCOUNT_CHOOSER -> {
var accountName = data?.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);

mPrefs.edit().putString(PREF_CREDENTIALS_PRIMARY, accountName).commit()

}

}
}

Expand Down
16 changes: 14 additions & 2 deletions app/src/main/java/org/witness/proofmode/SingleAssetView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@ import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material.icons.filled.CheckCircle
Expand Down Expand Up @@ -227,17 +229,27 @@ fun SingleAssetView(initialItem: ProofableItem, modifier: Modifier = Modifier, s
}
})
}
Box(
Column(
modifier = Modifier
.alpha(metadataOpacity)
.height(with(localDensity) { (topPartHeight / 2).toDp() })
.align(Alignment.BottomCenter)
.fillMaxWidth()
.verticalScroll(rememberScrollState())
) {
// ProofModeUtil.getProofHash(initialItem.uri,context)?.let { Text(it) }

var hash = ProofModeUtil.getProofHash(initialItem.uri,context)
if (hash != null) {
var summary = ProofModeUtil.getProofSummary(hash, context)
if (summary?.isNotEmpty() == true)
Text(modifier = Modifier.padding(3.dp,3.dp), text = "$summary")
}




}

}
Row(
verticalAlignment = Alignment.CenterVertically,
Expand Down

0 comments on commit 15927b7

Please sign in to comment.