pidgin/pidgin

Add purple_presence_compare

19 months ago, Gary Kramlich
d8fcd2907c3d
Parents f589ceec0172
Children 83b658257a8a
Add purple_presence_compare

This essentially just purple_buddy_presence_compare but with the buddy specific stuff removed.

Testing Done:
Compiled

Reviewed at https://reviews.imfreedom.org/r/1832/
--- a/libpurple/purplepresence.c Fri Sep 23 03:47:08 2022 -0500
+++ b/libpurple/purplepresence.c Sun Sep 25 00:02:52 2022 -0500
@@ -491,3 +491,38 @@
return purple_presence_is_online(presence) ? priv->login_time : 0;
}
+
+gint
+purple_presence_compare(PurplePresence *presence1, PurplePresence *presence2) {
+ time_t idle_time_1;
+ time_t idle_time_2;
+
+ if(presence1 == presence2) {
+ return 0;
+ } else if (presence1 == NULL) {
+ return 1;
+ } else if (presence2 == NULL) {
+ return -1;
+ }
+
+ if(purple_presence_is_online(presence1) &&
+ !purple_presence_is_online(presence2))
+ {
+ return -1;
+ } else if(purple_presence_is_online(presence2) &&
+ !purple_presence_is_online(presence1))
+ {
+ return 1;
+ }
+
+ idle_time_1 = time(NULL) - purple_presence_get_idle_time(presence1);
+ idle_time_2 = time(NULL) - purple_presence_get_idle_time(presence2);
+
+ if(idle_time_1 > idle_time_2) {
+ return 1;
+ } else if (idle_time_1 < idle_time_2) {
+ return -1;
+ }
+
+ return 0;
+}
--- a/libpurple/purplepresence.h Fri Sep 23 03:47:08 2022 -0500
+++ b/libpurple/purplepresence.h Sun Sep 25 00:02:52 2022 -0500
@@ -231,6 +231,21 @@
*/
time_t purple_presence_get_login_time(PurplePresence *presence);
+/**
+ * purple_presence_compare:
+ * @presence1: The first presence.
+ * @presence2: The second presence.
+ *
+ * Compares the presences for availability.
+ *
+ * Returns: -1 if @presence1 is more available than @presence2.
+ * 0 if @presence1 is equal to @presence2.
+ * 1 if @presence1 is less available than @presence2.
+ *
+ * Since: 3.0.0
+ */
+gint purple_presence_compare(PurplePresence *presence1, PurplePresence *presence2);
+
G_END_DECLS
#endif /* PURPLE_PRESENCE_H */