mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-11-04 19:27:55 +00:00
core: alerts with information about registering names (#7653)
* minimal api change * embed status. reduce * drop fake owner change * no-valid-link fix * add UX flow for name lookups * diagram edits * corrections * update name lookup API * manual renaming * implement core + cli * implement UI * fix * build iOS app blindly * shrink diff * fix review comments * review iterations * opuse 5.5 /goal iterations * fixes EP review * fixes * fixes * short goal iterations * refactor core-UI API to NameWarning with logic in core * diff cosmetics * simplify and normalize diagram * add excalidraw normalizer script and test git hook * cosmetics * commit wireframe collab doc to repo as README * review round on UX coverage * iterate on /goal * iterate on /goal * add tests * iterate on /goal * fix freshness bug with local chats: When core marks a chat verified for a name, it now first un-verifies the user's other chats of the same kind: - a contact name covers contacts and business chats; - a channel name covers channels. * align app divergences * docs fixes * iterations on /goal * align excalidraw * align and simplify core/UI/UXcanvas * 27 rounds of /goal * review * core: simplify connect plan with name lookup * simplify * cache names in a separate table * cache names resolution * wip * all * fix * remove cache * update plans * simplify * bot types * change types * simplify * update bot types * remove review * update view, tests * simplify "unverify" * update query plan * changes * simplify * test helpers * simpler * update query plans * fix * query plans * query plans * fixes * query plans --------- Co-authored-by: Alain Brenzikofer <alain@encointer.org> Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
This commit is contained in:
39 files changed
+2751
-385
No files matched your search
@@ -1481,10 +1481,12 @@ class ConnectionPlan_invitationLink(TypedDict):
|
||||
class ConnectionPlan_contactAddress(TypedDict):
|
||||
type: Literal["contactAddress"]
|
||||
contactAddressPlan: "ContactAddressPlan"
|
||||
nameChange: NotRequired["NameChange"]
|
||||
|
||||
class ConnectionPlan_groupLink(TypedDict):
|
||||
type: Literal["groupLink"]
|
||||
groupLinkPlan: "GroupLinkPlan"
|
||||
nameChange: NotRequired["NameChange"]
|
||||
|
||||
class ConnectionPlan_error(TypedDict):
|
||||
type: Literal["error"]
|
||||
@@ -1616,6 +1618,8 @@ class CtrlAppInfo(TypedDict):
|
||||
deviceName: str
|
||||
compression: bool
|
||||
|
||||
DomainVerification = Literal["failed", "verified", "moved"]
|
||||
|
||||
class DroppedMsg(TypedDict):
|
||||
brokerTs: str # ISO-8601 timestamp
|
||||
attempts: int # int
|
||||
@@ -1955,7 +1959,7 @@ class GroupInfo(TypedDict):
|
||||
rosterVersion: NotRequired[int] # int64
|
||||
membersRequireAttention: int # int
|
||||
viaGroupLinkUri: NotRequired[str]
|
||||
groupDomainVerified: NotRequired[bool]
|
||||
groupDomainVerified: NotRequired["DomainVerification"]
|
||||
|
||||
class GroupLink(TypedDict):
|
||||
userContactLinkId: int # int64
|
||||
@@ -2204,7 +2208,7 @@ class LocalProfile(TypedDict):
|
||||
localBadge: NotRequired["LocalBadge"]
|
||||
localAlias: str
|
||||
contactDomain: NotRequired["SimplexDomainClaim"]
|
||||
contactDomainVerified: NotRequired[bool]
|
||||
contactDomainVerified: NotRequired["DomainVerification"]
|
||||
|
||||
MemberCriteria = Literal["all"]
|
||||
|
||||
@@ -2348,6 +2352,18 @@ MsgVerified = MsgVerified_signed | MsgVerified_sigMissing
|
||||
|
||||
MsgVerified_Tag = Literal["signed", "sigMissing"]
|
||||
|
||||
class NameChange_lapsed(TypedDict):
|
||||
type: Literal["lapsed"]
|
||||
nameWarning: "NameWarning"
|
||||
|
||||
class NameChange_moved(TypedDict):
|
||||
type: Literal["moved"]
|
||||
knownChat: "ChatInfo"
|
||||
|
||||
NameChange = NameChange_lapsed | NameChange_moved
|
||||
|
||||
NameChange_Tag = Literal["lapsed", "moved"]
|
||||
|
||||
class NameErrorType_NO_RESOLVER(TypedDict):
|
||||
type: Literal["NO_RESOLVER"]
|
||||
|
||||
@@ -2362,6 +2378,34 @@ NameErrorType = NameErrorType_NO_RESOLVER | NameErrorType_NOT_FOUND | NameErrorT
|
||||
|
||||
NameErrorType_Tag = Literal["NO_RESOLVER", "NOT_FOUND", "RESOLVER"]
|
||||
|
||||
class NamePrice(TypedDict):
|
||||
amount: int # int64
|
||||
years: int # int
|
||||
|
||||
class NameWarning_expired(TypedDict):
|
||||
type: Literal["expired"]
|
||||
expiredAt: str # ISO-8601 timestamp
|
||||
graceUntil: NotRequired[str] # ISO-8601 timestamp
|
||||
|
||||
class NameWarning_available(TypedDict):
|
||||
type: Literal["available"]
|
||||
price: "NamePrice"
|
||||
|
||||
class NameWarning_reservedForCommunity(TypedDict):
|
||||
type: Literal["reservedForCommunity"]
|
||||
|
||||
class NameWarning_notRegistered(TypedDict):
|
||||
type: Literal["notRegistered"]
|
||||
|
||||
NameWarning = (
|
||||
NameWarning_expired
|
||||
| NameWarning_available
|
||||
| NameWarning_reservedForCommunity
|
||||
| NameWarning_notRegistered
|
||||
)
|
||||
|
||||
NameWarning_Tag = Literal["expired", "available", "reservedForCommunity", "notRegistered"]
|
||||
|
||||
class NetworkError_connectError(TypedDict):
|
||||
type: Literal["connectError"]
|
||||
connectError: str
|
||||
@@ -2951,9 +2995,17 @@ class SimplexDomainError_noValidLink(TypedDict):
|
||||
class SimplexDomainError_unknownDomain(TypedDict):
|
||||
type: Literal["unknownDomain"]
|
||||
|
||||
SimplexDomainError = SimplexDomainError_noValidLink | SimplexDomainError_unknownDomain
|
||||
class SimplexDomainError_nameWarning(TypedDict):
|
||||
type: Literal["nameWarning"]
|
||||
nameWarning: "NameWarning"
|
||||
|
||||
SimplexDomainError_Tag = Literal["noValidLink", "unknownDomain"]
|
||||
SimplexDomainError = (
|
||||
SimplexDomainError_noValidLink
|
||||
| SimplexDomainError_unknownDomain
|
||||
| SimplexDomainError_nameWarning
|
||||
)
|
||||
|
||||
SimplexDomainError_Tag = Literal["noValidLink", "unknownDomain", "nameWarning"]
|
||||
|
||||
class SimplexDomainProof(TypedDict):
|
||||
linkOwnerId: NotRequired[str]
|
||||
|
||||
Reference in new issue
Block a user