diff options
| author | 2025-01-22 10:38:01 +0100 | |
|---|---|---|
| committer | 2025-01-22 10:38:01 +0100 | |
| commit | a51c996efe0e41334523602271740b6e6b2501c0 (patch) | |
| tree | 6fa46e86218116c994e2fc01e1b33aa7cf369679 | |
| parent | Moved followed hashtag check to its own function. (diff) | |
| download | penes-snac2-a51c996efe0e41334523602271740b6e6b2501c0.tar.gz penes-snac2-a51c996efe0e41334523602271740b6e6b2501c0.tar.xz penes-snac2-a51c996efe0e41334523602271740b6e6b2501c0.zip | |
More tweaks to hashtag following code.
| -rw-r--r-- | activitypub.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/activitypub.c b/activitypub.c index b505fbb..86599ee 100644 --- a/activitypub.c +++ b/activitypub.c | |||
| @@ -636,19 +636,32 @@ int is_msg_for_me(snac *snac, const xs_dict *c_msg) | |||
| 636 | if (xs_match(type, "Like|Announce|EmojiReact")) { | 636 | if (xs_match(type, "Like|Announce|EmojiReact")) { |
| 637 | const char *object = xs_dict_get(c_msg, "object"); | 637 | const char *object = xs_dict_get(c_msg, "object"); |
| 638 | 638 | ||
| 639 | if (xs_type(object) == XSTYPE_DICT) | 639 | if (xs_is_dict(object)) |
| 640 | object = xs_dict_get(object, "id"); | 640 | object = xs_dict_get(object, "id"); |
| 641 | 641 | ||
| 642 | /* bad object id? reject */ | 642 | /* bad object id? reject */ |
| 643 | if (xs_type(object) != XSTYPE_STRING) | 643 | if (!xs_is_string(object)) |
| 644 | return 0; | 644 | return 0; |
| 645 | 645 | ||
| 646 | /* if it's about one of our posts, accept it */ | 646 | /* if it's about one of our posts, accept it */ |
| 647 | if (xs_startswith(object, snac->actor)) | 647 | if (xs_startswith(object, snac->actor)) |
| 648 | return 2; | 648 | return 2; |
| 649 | 649 | ||
| 650 | /* if it's by someone we don't follow, reject */ | 650 | /* if it's by someone we follow, accept it */ |
| 651 | return following_check(snac, actor); | 651 | if (following_check(snac, actor)) |
| 652 | return 1; | ||
| 653 | |||
| 654 | /* do we follow any hashtag? */ | ||
| 655 | if (xs_is_list(xs_dict_get(snac->config, "followed_hashtags"))) { | ||
| 656 | xs *obj = NULL; | ||
| 657 | |||
| 658 | /* if the admired object contains any followed hashtag, accept it */ | ||
| 659 | if (valid_status(object_get(object, &obj)) && | ||
| 660 | followed_hashtag_check(snac, obj)) | ||
| 661 | return 7; | ||
| 662 | } | ||
| 663 | |||
| 664 | return 0; | ||
| 652 | } | 665 | } |
| 653 | 666 | ||
| 654 | /* if it's an Undo, it must be from someone related to us */ | 667 | /* if it's an Undo, it must be from someone related to us */ |