Correctly fold user packet queries and display verification status
This commit is contained in:
parent
eda75276ce
commit
3e00320bac
|
@ -1,6 +1,8 @@
|
|||
package org.sufficientlysecure.keychain.model;
|
||||
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import com.google.auto.value.AutoValue;
|
||||
import org.sufficientlysecure.keychain.UserPacketsModel;
|
||||
import org.sufficientlysecure.keychain.pgp.CanonicalizedKeyRing.VerificationStatus;
|
||||
|
@ -10,16 +12,21 @@ import org.sufficientlysecure.keychain.provider.KeychainContract.Certs;
|
|||
@AutoValue
|
||||
public abstract class UserPacket implements UserPacketsModel {
|
||||
public static final Factory<UserPacket> FACTORY = new Factory<>(AutoValue_UserPacket::new);
|
||||
public static final SelectUserIdsByMasterKeyIdMapper<UserId, Certification> USER_ID_MAPPER =
|
||||
FACTORY.selectUserIdsByMasterKeyIdMapper(AutoValue_UserPacket_UserId::new, Certification.FACTORY);
|
||||
public static final SelectUserAttributesByTypeAndMasterKeyIdMapper<UserAttribute, Certification> USER_ATTRIBUTE_MAPPER =
|
||||
FACTORY.selectUserAttributesByTypeAndMasterKeyIdMapper(AutoValue_UserPacket_UserAttribute::new, Certification.FACTORY);
|
||||
public static final SelectUserIdsByMasterKeyIdMapper<UserId> USER_ID_MAPPER =
|
||||
FACTORY.selectUserIdsByMasterKeyIdMapper(AutoValue_UserPacket_UserId::new);
|
||||
public static final SelectUserAttributesByTypeAndMasterKeyIdMapper<UserAttribute> USER_ATTRIBUTE_MAPPER =
|
||||
FACTORY.selectUserAttributesByTypeAndMasterKeyIdMapper(AutoValue_UserPacket_UserAttribute::new);
|
||||
|
||||
@AutoValue
|
||||
public static abstract class UserId implements SelectUserIdsByMasterKeyIdModel {
|
||||
public boolean isVerified() {
|
||||
return verified() == VerificationStatus.VERIFIED_SECRET;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public VerificationStatus verified() {
|
||||
return CustomColumnAdapters.VERIFICATON_STATUS_ADAPTER.decode(verified_int());
|
||||
}
|
||||
}
|
||||
|
||||
@AutoValue
|
||||
|
@ -27,5 +34,10 @@ public abstract class UserPacket implements UserPacketsModel {
|
|||
public boolean isVerified() {
|
||||
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);
|
||||
vText = root.findViewById(R.id.linked_cert_text);
|
||||
|
||||
vKeySpinner.setShowNone(R.string.choice_select_cert);
|
||||
}
|
||||
|
||||
enum VerifyState {
|
||||
|
@ -244,7 +246,6 @@ public class LinkedIdViewFragment extends CryptoOperationFragment implements OnB
|
|||
if (!isSecret) {
|
||||
showButton(2);
|
||||
if (!vKeySpinner.isSingleEntry()) {
|
||||
vKeySpinner.setShowNone(R.string.choice_select_cert);
|
||||
vKeySpinnerContainer.setVisibility(View.VISIBLE);
|
||||
}
|
||||
} else {
|
||||
|
@ -264,6 +265,7 @@ public class LinkedIdViewFragment extends CryptoOperationFragment implements OnB
|
|||
vProgress.setDisplayedChild(0);
|
||||
vText.setText(context.getString(R.string.linked_text_confirming));
|
||||
vKeySpinnerContainer.setVisibility(View.GONE);
|
||||
vButtonConfirm.setEnabled(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,28 +17,32 @@ CREATE TABLE IF NOT EXISTS user_packets(
|
|||
);
|
||||
|
||||
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
|
||||
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 ?
|
||||
GROUP BY user_packets.master_key_id, user_packets.rank
|
||||
ORDER BY user_packets.master_key_id ASC,user_packets.rank ASC;
|
||||
|
||||
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
|
||||
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 = ?
|
||||
GROUP BY user_packets.rank
|
||||
ORDER BY user_packets.rank ASC;
|
||||
|
||||
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
|
||||
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 = ?
|
||||
GROUP BY user_packets.rank
|
||||
ORDER BY user_packets.rank ASC;
|
||||
|
||||
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
|
||||
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;
|
||||
|
|
Loading…
Reference in a new issue