Correctly fold user packet queries and display verification status
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
package org.sufficientlysecure.keychain.model;
|
package org.sufficientlysecure.keychain.model;
|
||||||
|
|
||||||
|
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
|
|
||||||
import com.google.auto.value.AutoValue;
|
import com.google.auto.value.AutoValue;
|
||||||
import org.sufficientlysecure.keychain.UserPacketsModel;
|
import org.sufficientlysecure.keychain.UserPacketsModel;
|
||||||
import org.sufficientlysecure.keychain.pgp.CanonicalizedKeyRing.VerificationStatus;
|
import org.sufficientlysecure.keychain.pgp.CanonicalizedKeyRing.VerificationStatus;
|
||||||
@@ -10,16 +12,21 @@ import org.sufficientlysecure.keychain.provider.KeychainContract.Certs;
|
|||||||
@AutoValue
|
@AutoValue
|
||||||
public abstract class UserPacket implements UserPacketsModel {
|
public abstract class UserPacket implements UserPacketsModel {
|
||||||
public static final Factory<UserPacket> FACTORY = new Factory<>(AutoValue_UserPacket::new);
|
public static final Factory<UserPacket> FACTORY = new Factory<>(AutoValue_UserPacket::new);
|
||||||
public static final SelectUserIdsByMasterKeyIdMapper<UserId, Certification> USER_ID_MAPPER =
|
public static final SelectUserIdsByMasterKeyIdMapper<UserId> USER_ID_MAPPER =
|
||||||
FACTORY.selectUserIdsByMasterKeyIdMapper(AutoValue_UserPacket_UserId::new, Certification.FACTORY);
|
FACTORY.selectUserIdsByMasterKeyIdMapper(AutoValue_UserPacket_UserId::new);
|
||||||
public static final SelectUserAttributesByTypeAndMasterKeyIdMapper<UserAttribute, Certification> USER_ATTRIBUTE_MAPPER =
|
public static final SelectUserAttributesByTypeAndMasterKeyIdMapper<UserAttribute> USER_ATTRIBUTE_MAPPER =
|
||||||
FACTORY.selectUserAttributesByTypeAndMasterKeyIdMapper(AutoValue_UserPacket_UserAttribute::new, Certification.FACTORY);
|
FACTORY.selectUserAttributesByTypeAndMasterKeyIdMapper(AutoValue_UserPacket_UserAttribute::new);
|
||||||
|
|
||||||
@AutoValue
|
@AutoValue
|
||||||
public static abstract class UserId implements SelectUserIdsByMasterKeyIdModel {
|
public static abstract class UserId implements SelectUserIdsByMasterKeyIdModel {
|
||||||
public boolean isVerified() {
|
public boolean isVerified() {
|
||||||
return verified() == VerificationStatus.VERIFIED_SECRET;
|
return verified() == VerificationStatus.VERIFIED_SECRET;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
public VerificationStatus verified() {
|
||||||
|
return CustomColumnAdapters.VERIFICATON_STATUS_ADAPTER.decode(verified_int());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@AutoValue
|
@AutoValue
|
||||||
@@ -27,5 +34,10 @@ public abstract class UserPacket implements UserPacketsModel {
|
|||||||
public boolean isVerified() {
|
public boolean isVerified() {
|
||||||
return verified() == VerificationStatus.VERIFIED_SECRET;
|
return verified() == VerificationStatus.VERIFIED_SECRET;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
public VerificationStatus verified() {
|
||||||
|
return CustomColumnAdapters.VERIFICATON_STATUS_ADAPTER.decode(verified_int());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -225,6 +225,8 @@ public class LinkedIdViewFragment extends CryptoOperationFragment implements OnB
|
|||||||
|
|
||||||
vProgress = root.findViewById(R.id.linked_cert_progress);
|
vProgress = root.findViewById(R.id.linked_cert_progress);
|
||||||
vText = root.findViewById(R.id.linked_cert_text);
|
vText = root.findViewById(R.id.linked_cert_text);
|
||||||
|
|
||||||
|
vKeySpinner.setShowNone(R.string.choice_select_cert);
|
||||||
}
|
}
|
||||||
|
|
||||||
enum VerifyState {
|
enum VerifyState {
|
||||||
@@ -244,7 +246,6 @@ public class LinkedIdViewFragment extends CryptoOperationFragment implements OnB
|
|||||||
if (!isSecret) {
|
if (!isSecret) {
|
||||||
showButton(2);
|
showButton(2);
|
||||||
if (!vKeySpinner.isSingleEntry()) {
|
if (!vKeySpinner.isSingleEntry()) {
|
||||||
vKeySpinner.setShowNone(R.string.choice_select_cert);
|
|
||||||
vKeySpinnerContainer.setVisibility(View.VISIBLE);
|
vKeySpinnerContainer.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -264,6 +265,7 @@ public class LinkedIdViewFragment extends CryptoOperationFragment implements OnB
|
|||||||
vProgress.setDisplayedChild(0);
|
vProgress.setDisplayedChild(0);
|
||||||
vText.setText(context.getString(R.string.linked_text_confirming));
|
vText.setText(context.getString(R.string.linked_text_confirming));
|
||||||
vKeySpinnerContainer.setVisibility(View.GONE);
|
vKeySpinnerContainer.setVisibility(View.GONE);
|
||||||
|
vButtonConfirm.setEnabled(false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,28 +17,32 @@ CREATE TABLE IF NOT EXISTS user_packets(
|
|||||||
);
|
);
|
||||||
|
|
||||||
selectUserIdsByMasterKeyId:
|
selectUserIdsByMasterKeyId:
|
||||||
SELECT user_packets.master_key_id, user_packets.rank, user_id, name, email, comment, is_primary, is_revoked, certs.verified
|
SELECT user_packets.master_key_id, user_packets.rank, user_id, name, email, comment, is_primary, is_revoked, MIN(certs.verified) AS verified_int
|
||||||
FROM user_packets
|
FROM user_packets
|
||||||
LEFT JOIN certs ON ( user_packets.master_key_id = certs.master_key_id AND user_packets.rank = certs.rank AND certs.verified > 0 )
|
LEFT JOIN certs ON ( user_packets.master_key_id = certs.master_key_id AND user_packets.rank = certs.rank AND certs.verified > 0 )
|
||||||
WHERE user_packets.type IS NULL AND user_packets.is_revoked = 0 AND user_packets.master_key_id IN ?
|
WHERE user_packets.type IS NULL AND user_packets.is_revoked = 0 AND user_packets.master_key_id IN ?
|
||||||
|
GROUP BY user_packets.master_key_id, user_packets.rank
|
||||||
ORDER BY user_packets.master_key_id ASC,user_packets.rank ASC;
|
ORDER BY user_packets.master_key_id ASC,user_packets.rank ASC;
|
||||||
|
|
||||||
selectUserIdsByMasterKeyIdAndVerification:
|
selectUserIdsByMasterKeyIdAndVerification:
|
||||||
SELECT user_packets.master_key_id, user_packets.rank, user_id, name, email, comment, is_primary, is_revoked, certs.verified
|
SELECT user_packets.master_key_id, user_packets.rank, user_id, name, email, comment, is_primary, is_revoked, MIN(certs.verified) AS verified_int
|
||||||
FROM user_packets
|
FROM user_packets
|
||||||
LEFT JOIN certs ON ( user_packets.master_key_id = certs.master_key_id AND user_packets.rank = certs.rank AND certs.verified > 0 )
|
LEFT JOIN certs ON ( user_packets.master_key_id = certs.master_key_id AND user_packets.rank = certs.rank AND certs.verified > 0 )
|
||||||
WHERE user_packets.type IS NULL AND user_packets.is_revoked = 0 AND user_packets.master_key_id = ? AND certs.verified = ?
|
WHERE user_packets.type IS NULL AND user_packets.is_revoked = 0 AND user_packets.master_key_id = ? AND certs.verified = ?
|
||||||
|
GROUP BY user_packets.rank
|
||||||
ORDER BY user_packets.rank ASC;
|
ORDER BY user_packets.rank ASC;
|
||||||
|
|
||||||
selectUserAttributesByTypeAndMasterKeyId:
|
selectUserAttributesByTypeAndMasterKeyId:
|
||||||
SELECT user_packets.master_key_id, user_packets.rank, attribute_data, is_primary, is_revoked, certs.verified
|
SELECT user_packets.master_key_id, user_packets.rank, attribute_data, is_primary, is_revoked, MIN(certs.verified) AS verified_int
|
||||||
FROM user_packets
|
FROM user_packets
|
||||||
LEFT JOIN certs ON ( user_packets.master_key_id = certs.master_key_id AND user_packets.rank = certs.rank AND certs.verified > 0 )
|
LEFT JOIN certs ON ( user_packets.master_key_id = certs.master_key_id AND user_packets.rank = certs.rank AND certs.verified > 0 )
|
||||||
WHERE user_packets.type = ? AND user_packets.is_revoked = 0 AND user_packets.master_key_id = ?
|
WHERE user_packets.type = ? AND user_packets.is_revoked = 0 AND user_packets.master_key_id = ?
|
||||||
|
GROUP BY user_packets.rank
|
||||||
ORDER BY user_packets.rank ASC;
|
ORDER BY user_packets.rank ASC;
|
||||||
|
|
||||||
selectSpecificUserAttribute:
|
selectSpecificUserAttribute:
|
||||||
SELECT user_packets.master_key_id, user_packets.rank, attribute_data, is_primary, is_revoked, certs.verified
|
SELECT user_packets.master_key_id, user_packets.rank, attribute_data, is_primary, is_revoked, MIN(certs.verified) AS verified_int
|
||||||
FROM user_packets
|
FROM user_packets
|
||||||
LEFT JOIN certs ON ( user_packets.master_key_id = certs.master_key_id AND user_packets.rank = certs.rank AND certs.verified > 0 )
|
LEFT JOIN certs ON ( user_packets.master_key_id = certs.master_key_id AND user_packets.rank = certs.rank AND certs.verified > 0 )
|
||||||
WHERE user_packets.type = ? AND user_packets.master_key_id = ? AND user_packets.rank = ?;
|
WHERE user_packets.type = ? AND user_packets.master_key_id = ? AND user_packets.rank = ?
|
||||||
|
GROUP BY user_packets.master_key_id, user_packets.rank;
|
||||||
|
|||||||
Reference in New Issue
Block a user