feat: Maker avatar (#205)

- GUI: Changed terminology from "swap providers" to "makers"
- GUI: For each maker, we now display a unique deterministically generated avatar derived from the maker's public key
This commit is contained in:
binarybaron 2024-11-25 20:15:09 +01:00 committed by GitHub
parent 23d22b5792
commit b2e74df37e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
36 changed files with 511 additions and 429 deletions

View file

@ -1,16 +1,16 @@
import { ExtendedProviderStatus } from "models/apiModel";
import { isProviderOnCorrectNetwork, isProviderOutdated } from "./multiAddrUtils";
import { ExtendedMakerStatus } from "models/apiModel";
import { isMakerOnCorrectNetwork, isMakerOutdated } from "./multiAddrUtils";
export function sortProviderList(list: ExtendedProviderStatus[]) {
export function sortMakerList(list: ExtendedMakerStatus[]) {
return list
// Filter out providers that are on the wrong network (testnet / mainnet)
.filter(isProviderOnCorrectNetwork)
// Filter out makers that are on the wrong network (testnet / mainnet)
.filter(isMakerOnCorrectNetwork)
.concat()
// Sort by criteria
.sort((firstEl, secondEl) => {
// If either provider is outdated, prioritize the one that isn't
if (isProviderOutdated(firstEl) && !isProviderOutdated(secondEl)) return 1;
if (!isProviderOutdated(firstEl) && isProviderOutdated(secondEl)) return -1;
if (isMakerOutdated(firstEl) && !isMakerOutdated(secondEl)) return 1;
if (!isMakerOutdated(firstEl) && isMakerOutdated(secondEl)) return -1;
// If neither of them have a relevancy score or they are the same, sort by price
if (firstEl.relevancy == secondEl.relevancy) {
@ -24,7 +24,7 @@ export function sortProviderList(list: ExtendedProviderStatus[]) {
// Otherwise, sort by relevancy score
return secondEl.relevancy - firstEl.relevancy;
})
// Remove duplicate providers
// Remove duplicate makers
.filter((provider, index, self) =>
index === self.findIndex((p) => p.peerId === provider.peerId)
)