mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2024-09-29 08:20:51 +00:00
init block is positionally aware.. in some phones...
This commit is contained in:
parent
39e8289375
commit
6d21653b36
@ -64,6 +64,11 @@ class Account(
|
|||||||
@Transient
|
@Transient
|
||||||
var userProfile: User? = null
|
var userProfile: User? = null
|
||||||
|
|
||||||
|
// Observers line up here.
|
||||||
|
val live: AccountLiveData = AccountLiveData(this)
|
||||||
|
val liveLanguages: AccountLiveData = AccountLiveData(this)
|
||||||
|
val saveable: AccountLiveData = AccountLiveData(this)
|
||||||
|
|
||||||
fun userProfile(): User {
|
fun userProfile(): User {
|
||||||
userProfile?.let { return it }
|
userProfile?.let { return it }
|
||||||
|
|
||||||
@ -420,7 +425,10 @@ class Account(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun updateContactListTo(newContactList: ContactListEvent?) {
|
private fun updateContactListTo(newContactList: ContactListEvent?) {
|
||||||
if ((newContactList?.follows?.size ?: 0) > 0 && latestContactList != newContactList) {
|
if (newContactList?.follows.isNullOrEmpty()) return
|
||||||
|
|
||||||
|
// Events might be different objects, we have to compare their ids.
|
||||||
|
if (latestContactList?.id?.toHex() != newContactList?.id?.toHex()) {
|
||||||
latestContactList = newContactList
|
latestContactList = newContactList
|
||||||
saveable.invalidateData()
|
saveable.invalidateData()
|
||||||
}
|
}
|
||||||
@ -448,48 +456,6 @@ class Account(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
init {
|
|
||||||
latestContactList?.let {
|
|
||||||
println("Loading saved contacts ${it.toJson()}")
|
|
||||||
if (userProfile().latestContactList == null) {
|
|
||||||
LocalCache.consume(it)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Observes relays to restart connections
|
|
||||||
userProfile().live().relays.observeForever {
|
|
||||||
GlobalScope.launch(Dispatchers.IO) {
|
|
||||||
reconnectIfRelaysHaveChanged()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// saves contact list for the next time.
|
|
||||||
userProfile().live().follows.observeForever {
|
|
||||||
GlobalScope.launch(Dispatchers.IO) {
|
|
||||||
updateContactListTo(userProfile().latestContactList)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// imports transient blocks due to spam.
|
|
||||||
LocalCache.antiSpam.liveSpam.observeForever {
|
|
||||||
GlobalScope.launch(Dispatchers.IO) {
|
|
||||||
it.cache.spamMessages.snapshot().values.forEach {
|
|
||||||
if (it.pubkeyHex !in transientHiddenUsers && it.duplicatedMessages > 5) {
|
|
||||||
val userToBlock = LocalCache.getOrCreateUser(it.pubkeyHex)
|
|
||||||
if (userToBlock != userProfile() && userToBlock !in userProfile().follows) {
|
|
||||||
transientHiddenUsers = transientHiddenUsers + it.pubkeyHex
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Observers line up here.
|
|
||||||
val live: AccountLiveData = AccountLiveData(this)
|
|
||||||
val liveLanguages: AccountLiveData = AccountLiveData(this)
|
|
||||||
val saveable: AccountLiveData = AccountLiveData(this)
|
|
||||||
|
|
||||||
fun isHidden(user: User) = user.pubkeyHex in hiddenUsers || user.pubkeyHex in transientHiddenUsers
|
fun isHidden(user: User) = user.pubkeyHex in hiddenUsers || user.pubkeyHex in transientHiddenUsers
|
||||||
|
|
||||||
fun isAcceptable(user: User): Boolean {
|
fun isAcceptable(user: User): Boolean {
|
||||||
@ -531,6 +497,43 @@ class Account(
|
|||||||
|
|
||||||
saveable.invalidateData()
|
saveable.invalidateData()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
init {
|
||||||
|
latestContactList?.let {
|
||||||
|
println("Loading saved contacts ${it.toJson()}")
|
||||||
|
if (userProfile().latestContactList == null) {
|
||||||
|
LocalCache.consume(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Observes relays to restart connections
|
||||||
|
userProfile().live().relays.observeForever {
|
||||||
|
GlobalScope.launch(Dispatchers.IO) {
|
||||||
|
reconnectIfRelaysHaveChanged()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// saves contact list for the next time.
|
||||||
|
userProfile().live().follows.observeForever {
|
||||||
|
GlobalScope.launch(Dispatchers.IO) {
|
||||||
|
updateContactListTo(userProfile().latestContactList)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// imports transient blocks due to spam.
|
||||||
|
LocalCache.antiSpam.liveSpam.observeForever {
|
||||||
|
GlobalScope.launch(Dispatchers.IO) {
|
||||||
|
it.cache.spamMessages.snapshot().values.forEach {
|
||||||
|
if (it.pubkeyHex !in transientHiddenUsers && it.duplicatedMessages > 5) {
|
||||||
|
val userToBlock = LocalCache.getOrCreateUser(it.pubkeyHex)
|
||||||
|
if (userToBlock != userProfile() && userToBlock !in userProfile().follows) {
|
||||||
|
transientHiddenUsers = transientHiddenUsers + it.pubkeyHex
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class AccountLiveData(private val account: Account): LiveData<AccountState>(AccountState(account)) {
|
class AccountLiveData(private val account: Account): LiveData<AccountState>(AccountState(account)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user