From 41d80af128cc74e538a2f5d2474ca49febc52c35 Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Sat, 25 Dec 2021 02:37:31 -0500 Subject: mark more channels as unread properly --- src/discord/snowflake.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/discord/snowflake.cpp') diff --git a/src/discord/snowflake.cpp b/src/discord/snowflake.cpp index cea9153..32f9f4f 100644 --- a/src/discord/snowflake.cpp +++ b/src/discord/snowflake.cpp @@ -1,7 +1,8 @@ #include "snowflake.hpp" +#include "util.hpp" +#include #include #include -#include constexpr static uint64_t DiscordEpochSeconds = 1420070400; @@ -14,13 +15,13 @@ Snowflake::Snowflake(uint64_t n) : m_num(n) {} Snowflake::Snowflake(const std::string &str) { - if (str.size()) + if (!str.empty()) m_num = std::stoull(str); else m_num = Invalid; } Snowflake::Snowflake(const Glib::ustring &str) { - if (str.size()) + if (!str.empty()) m_num = std::strtoull(str.c_str(), nullptr, 10); else m_num = Invalid; @@ -38,6 +39,14 @@ Snowflake Snowflake::FromNow() { return snowflake; } +Snowflake Snowflake::FromISO8601(std::string_view ts) { + int yr, mon, day, hr, min, sec, tzhr, tzmin; + float milli; + std::sscanf(ts.data(), "%d-%d-%dT%d:%d:%d%f+%d:%d", + &yr, &mon, &day, &hr, &min, &sec, &milli, &tzhr, &tzmin); + return SecondsInterval * (util::TimeToEpoch(yr, mon, day, hr, min, sec) - DiscordEpochSeconds) + static_cast(milli * static_cast(SecondsInterval)); +} + bool Snowflake::IsValid() const { return m_num != Invalid; } -- cgit v1.2.3