Ryan Barrett
0a3976e33a
Object._post_put_hook: use objects_cache_lock for objects_cache
...
fixes https://console.cloud.google.com/errors/detail/CMv025380KiFOg?project=bridgy-federated
2024-05-27 20:38:51 -07:00
Ryan Barrett
5a77dde7e8
noop: Object.actor_link: remove dead code
2024-05-24 09:53:16 -07:00
Ryan Barrett
91ffffc8e0
bug fix for quality filter (REQUIRES_*) status checks
...
they go before explicit opt in overrid
2024-05-16 23:33:30 -07:00
Ryan Barrett
e4f9966686
Protocol.receive: second part of making explicit opt in override implicit opt out
...
for #1052 , #974
2024-05-15 11:41:20 -07:00
Ryan Barrett
71b2306476
User.status/is_enabled: make explicit opt in override implicit profile opt-outs
...
...like Bluesky's hide from logged in views. fixes #1052
2024-05-15 10:35:03 -07:00
Ryan Barrett
2b449c6d31
User.status blocked bug fix for account age
...
for #1048
2024-05-13 07:35:12 -07:00
Ryan Barrett
79e5d2be07
bug fix for User.status handling: check for false-ness, not is None
...
we have some users in the datastore with status None, some with False. 😕 fixes #1048
2024-05-12 19:02:07 -07:00
Ryan Barrett
348987f0b4
add Protocol.REQUIRES_OLD_ACCOUNT, enable for ActivityPub
2024-05-11 19:20:33 -07:00
Ryan Barrett
890c7083d3
Protocol.REQUIRES_NAME: check against handle, id
2024-05-11 16:47:12 -07:00
Ryan Barrett
de0af66979
basic anti-spam: add new Protocol.REQUIRES_AVATAR/NAME constants
...
...and start returning `blocked` from User.status for them
2024-05-11 16:03:07 -07:00
Ryan Barrett
67e0ac414e
stop storing Object.as1 in datastore, generate it dynamically instead
...
I thought I'd use it in the web console for debugging more, but I use a Python shell instead
2024-05-07 22:13:54 -07:00
Ryan Barrett
f533479e0b
noop: drop unused flask.g imports
2024-05-07 17:14:59 -07:00
Ryan Barrett
38a8067ef7
models.PROTOCOLS: switch to hard coding protocol string labels/abbrevs
...
we used to wait for ProtocolUserMeta to populate these string keys, but that was awkward to use in datastore model properties with choices, below; it required overriding them in reset_model_properties, which was always flaky.
2024-05-07 16:15:20 -07:00
Ryan Barrett
5fa0645d0b
user page: don't show DMs to protocol bot users
...
fixes #1022
2024-05-06 12:10:13 -07:00
Ryan Barrett
c98d8fce00
switch ATProto polling from cursor to indexedAt
...
for #954
2024-05-05 07:31:12 -07:00
Ryan Barrett
2f1ec8779f
ATProto: start using cursors in feed and notif polls
...
for #954
2024-05-03 12:54:59 -07:00
Ryan Barrett
0ddb1255f4
UI: fix main user link on user pages to be external
2024-04-30 16:13:31 -07:00
Ryan Barrett
f668a53f74
User.is_enabled: if a user explicitly opts in, override profile opt outs
...
fixes #974
2024-04-30 12:38:43 -07:00
Ryan Barrett
b6be345921
UI: refactor actor link rendering into User.user_link / Object.actor_link
2024-04-29 12:27:00 -07:00
Ryan Barrett
bf70ddd348
user pages UI: don't show user in every activity on profile and feed pages
...
it's redundant
2024-04-29 11:26:28 -07:00
Ryan Barrett
9617d8ab71
move Protocol.is_enabled to User.is_enabled
2024-04-27 20:34:37 -07:00
Ryan Barrett
cbe4b59206
convert Protocol.is_enabled_to to an instance method
...
next commit will move it to User
2024-04-27 20:27:33 -07:00
Ryan Barrett
4012b13a5a
User: add delete as a type that expires
2024-04-26 09:59:08 -07:00
Ryan Barrett
3c62f7cfcc
give up on email for now, still can't get SMTP to work
...
Gmail SMTP is unhappy with auth, even though I got it to work on https://shell-py3.appspot.com/ , and Gandi SMTP seems to block Google Cloud IPs. sigh.
2024-04-24 15:30:20 -07:00
Ryan Barrett
55ae9fd2bb
User.enable/disable_protocol: move email out of datastore tx
2024-04-24 14:34:52 -07:00
Ryan Barrett
b543fdb1d5
switch to Gmail SMTP, other minor tweaks
2024-04-24 14:26:20 -07:00
Ryan Barrett
ece168fac1
email me when someone enables or disables a protocol
2024-04-24 11:15:28 -07:00
Ryan Barrett
506de7fd1d
User.get_or_create: if the id is a copy, return the original
...
...which will be in a different protocol! worried this will break something. hrm.
2024-04-23 17:56:59 -07:00
Ryan Barrett
0238b46e36
add Protocol.HAS_COPIES, use to generate ids.COPIES_PROTOCOLS
2024-04-23 16:52:53 -07:00
Ryan Barrett
c86c91b25b
User.enable_protocols bug fix: only call create_for for copy protocols
...
also add integration test for following protocol bot user from ATProto
2024-04-23 16:38:08 -07:00
Ryan Barrett
11eb082190
tighten common.unwrap so it doesn't remove protocol bot user URLs
...
...like https://bsky.brid.gy/ . this hopefully fixes following bot users in eg AP to enable protocols.
2024-04-23 12:00:39 -07:00
Ryan Barrett
10023d17fd
Protocol.enable_protocol: create copy user if necessary
2024-04-21 12:18:12 -07:00
Ryan Barrett
6b597c90c3
User.get_or_create: abstract propagate and create_for across protocols
2024-04-21 11:40:13 -07:00
Ryan Barrett
0c37d94191
ids.translate_* noop refactoring: from_proto => from_, to_proto => to
2024-04-20 21:03:06 -07:00
Ryan Barrett
7c34689c9f
index.yaml: remove obsolete datastore indices
2024-04-20 21:02:14 -07:00
Ryan Barrett
1981c8eba8
User.get_or_create: propagate obj into existing user
2024-04-19 12:53:44 -07:00
Ryan Barrett
3c55d7c145
protocol: extract out enable/disable_protocol methods
...
for #880
2024-04-19 12:53:44 -07:00
Ryan Barrett
917732ad4b
demote models import in ids.py to top-level to avoid circular import
2024-04-18 07:09:52 -07:00
Ryan Barrett
259b7d72dd
start on conditional opt in
...
* add Protocol.DEFAULT_ENABLED_PROTOCOLS
* add User.enabled_protocols
* move common.is_enabled to Protocol.is_enabled_to, include opt out/in
2024-04-17 16:43:10 -07:00
Ryan Barrett
f02ba80304
switch from gcloud datastore emulator to firestore emulator
...
...since the datastore emulator evidently doesn't support != query filters: https://github.com/googleapis/python-ndb/issues/962
2024-04-17 11:36:28 -07:00
Ryan Barrett
393605bde9
change ATProto.ABBREV to bsky
...
🤞 , for #961
2024-04-17 06:54:16 -07:00
Ryan Barrett
bf52d80e0f
add protocol logo to user page activities and followers
...
fixes #939
also drop page size from 30 to 20
2024-04-15 19:41:22 -07:00
Ryan Barrett
86ad33b896
user page tweak for follow accepts
...
for #825
2024-04-15 14:45:02 -07:00
Ryan Barrett
2ec22de09f
abstract redirect.py to be multi-protocol
...
...mostly. creating the underlying user opportunistically is still Web-only.
2024-04-14 18:26:34 -07:00
Ryan Barrett
2085b131a1
atproto user pages: render DIDs as handles with profile links
...
for #825
2024-04-12 12:34:49 -07:00
Ryan Barrett
ea1f3dce49
user page bug fix for 133d640f1d
2024-04-12 07:16:06 -07:00
Ryan Barrett
133d640f1d
improve rendering of ATProto interactions on user pages
...
for #825
2024-04-11 15:02:15 -07:00
Ryan Barrett
7009267bb0
use new handle_or_id kwarg in common.is_enabled calls
2024-04-10 11:49:53 -07:00
Ryan Barrett
5767ffabb5
add new Object.normalize_ids method, use in Protocol.receive
...
eg https://bsky.app/ ... URLs to DIDs for actors or at:// URIs for objects
this hopefully fixes web => ATProto follows of https://bsky.app/ ... profile URLs.
2024-04-09 13:07:57 -07:00
Ryan Barrett
5a1dda151c
ATProto.create_for: better support for local testing
2024-03-24 08:59:54 -04:00