diff --git a/apps/roster/src/roster.erl b/apps/roster/src/roster.erl index 094ff5327e58a5572e2a587025812a70506f4f36..9e986471be65bd1e8de48e14c9f2000c77734572 100644 --- a/apps/roster/src/roster.erl +++ b/apps/roster/src/roster.erl @@ -1274,29 +1274,19 @@ objlist(Index, Id, LastSync, N, Fun) when Index == #'Roster'.userlist; Index == #'Roster'.roomlist; Index == #'Roster'.favorite -> case kvs:get('Roster', Id) of - {ok, R} -> + {ok, R} -> objlist(Index, R, LastSync, N, Fun); _ -> {error, roster_not_found} end. -build_object(Object, - [Chunk | _] = Acc, - Roster, - LastSync, - N, - Fun) when length(Chunk) >= N -> +build_object(Object, [Chunk | _] = Acc, Roster, LastSync, N, Fun) + when N /= [] andalso length(Chunk) >= N -> Fun(Chunk), build_object(Object, [[] | Acc], Roster, LastSync, N, Fun); -build_object(Object, - Acc, - #'Roster'{ - id = Id, - phone = Phone - } = Roster, - LastSync, - _N, - _Fun) -> +build_object(Object, Acc, + #'Roster'{ id = Id, phone = Phone } = Roster, + LastSync, _N, _Fun) -> PhoneId = phone_id(Phone, Id), Feed = feed(Object, PhoneId), LastUpd = last_upd(Object), @@ -2056,8 +2046,9 @@ daystime_to_ms({D, Time}) -> (D * 86400 + calendar:time_to_seconds(Time)) * 1000 timestamp_to_datetime(TimeStamp) -> UnixEpochGS = calendar:datetime_to_gregorian_seconds({{1970, 1, 1}, {0, 0, 0}}), GregorianSeconds = (TimeStamp div 1000) + UnixEpochGS, + Ms = TimeStamp rem 1000, {{Year, Month, Day}, {Hour, Minute, Second}} = calendar:gregorian_seconds_to_datetime(GregorianSeconds), - lists:flatten(io_lib:format("~4..0w-~2..0w-~2..0wT~2..0w:~2..0w:~2..0w", [Year, Month, Day, Hour, Minute, Second])). + lists:flatten(io_lib:format("~4..0w-~2..0w-~2..0wT~2..0w:~2..0w:~2..0w.~3..0w", [Year, Month, Day, Hour, Minute, Second, Ms])). mk2(I) when I < 10 -> [$0 | integer_to_list(I)]; mk2(I) -> integer_to_list(I).