Таким образом, в основном, когда пользователь приходит к «премиум» активности в моем приложении, он видит кнопку с надписью «Покупка премиум». Когда он щелкает по нему, документ в Firestore обновляется (логическое значение от false до true), кнопка исчезает, и вместо кнопки появляется TextView. Когда пользователь переходит обратно к MainActivity и оттуда снова к операции «Premium», он снова видит кнопку «Купить премиум», которую я не хочу, потому что он уже «купил» ее. Вопрос в том, как мне добиться того, чтобы, когда пользователь нажимает кнопку, вид макета изменился навсегда, поэтому, когда пользователь возвращается к действию, он больше не сможет совершить покупку. Я не хочу, чтобы он видел кнопку.
Должен ли я использовать логическое значение (премиум-член: true), которое изменилось в документе в Firestore после того, как он щелкнул по нему, чтобы сделать это? Например: если в документе написано «Премиум-членство: истина», видимость кнопки «установить» пропала и т. Д. Это приведет к «чтению» Firestore каждый раз, когда пользователь переходит к «Деятельности», есть ли лучший способ?
Вот мойonClickListener кнопки покупки:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_premium_purchase);
purchase = findViewById(R.id.card_view_premium_purchase);
premiumTextView = findViewById(R.id.premium_purchase_success);
premiumTextView.setVisibility(View.GONE);
purchase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String username = user.getDisplayName();
DocumentReference userRef = db.collection("User").document(username);
// Set the "pro membership" to true
userRef
.update("pro membership", true).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d(TAG, "DocumentSnapshot successfully updated!");
Toast.makeText(PremiumPurchaseActivity.this, "Guess Premium successfully bought", Toast.LENGTH_SHORT).show();
premiumTextView.setVisibility(View.VISIBLE);
purchase.setVisibility(View.GONE);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error updating document", e);
}
});
}
});
}