On my app user can change it username. So not to increase firebase loads, i want to create time limit before last tap, (1 week i think will be ok), and in other time make this button gray color and not active with counter how many days remaining.
Here is my button code:
Button(action: {
let currentUser = Auth.auth().currentUser
if (currentUser != nil) {
self.loadingView = true
let id = currentUser!.uid
Ref.FIRESTORE_COLLECTION_USERS.document(id).updateData(["bio" : self.bio, "username" : self.name, "keywords" : self.name.splitStringToArray()]) { (err) in
//Конструкция: если err (ошибка) не nil, значит ест ьошибка и что-то пошло не так
// если nil, значит все хорошо
if let err = err {
//делаем что-то если ошибка
//например показываем надпись с сообщением об ошибке
print("Error updating document: (err)")
self.loadingView = false
} else {
self.sessionStore.userSession?.bio = self.bio
self.sessionStore.userSession?.username = self.name
//то же самое только если все получилось
print("Document successfully updated")
if (self.imageData == nil) {
self.loadingView = false
self.showEditProfile = false
}
}
}
//save image
//Если новая картинка выбрана
if (self.imageData != nil && self.sessionStore.userSession != nil) {
//Сначала загружаем в хранилище, а затем ссылку на это фото обновляем в базе данных у пользователя
let storageAvatarUserId = Ref.STORAGE_AVATAR_USERID(userId: Auth.auth().currentUser!.uid)
let metadata = StorageMetadata()
metadata.contentType = "image/jpg"
//для био было
self.sessionStore.userSession?.bio = self.bio
//для логина - апдейт
self.sessionStore.userSession?.username = self.name
//cлушатель для обновления био
NotificationCenter.default.post(name: NSNotification.Name("update_profile_bio"), object: nil)
StorageService.updateAvatar(userId: self.sessionStore.userSession!.uid, username: self.sessionStore.userSession!.username, email: self.sessionStore.userSession!.email, imageData: self.imageData!, metaData: metadata, storageAvatarRef: storageAvatarUserId, onSuccses: {url in
if url != nil {
self.sessionStore.userSession?.profileImageUrl = url!
NotificationCenter.default.post(name: NSNotification.Name("update_profile_image"), object: nil)
self.loadingView = false
self.showEditProfile = false
} else {
self.loadingView = false
}
})
}
}
}) {
HStack {
Spacer()
Text(LocalizedStringKey("Save changes")).fontWeight(.bold).foregroundColor(Color.white)
Spacer()
}.padding().background(Color.black)
}.cornerRadius(5).shadow(radius: 10, x: 0, y: 10).padding()
So i want - when user press this button - make it avalible to tap after 7 days. And always use this rule.
question from:
https://stackoverflow.com/questions/65862409/create-ability-to-time-limit-tap-on-button-with-after-week-since-last-tap-swift 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…