(ctx context.Context, federation *gomatrixserverlib.FederationClient, userIds []string, server string)
| 99 | } |
| 100 | |
| 101 | func GetUserOffline3DayOrInactive3Day(ctx context.Context, federation *gomatrixserverlib.FederationClient, userIds []string, server string) (overThreeDays []string, inactiveFor3Days []string, err error) { |
| 102 | var serversMap = make(map[string][]string) |
| 103 | for i, _ := range userIds { |
| 104 | // serverusers |
| 105 | _, domain, _ := gomatrixserverlib.SplitID('@', userIds[i]) |
| 106 | if _, ok := serversMap[string(domain)]; !ok { |
| 107 | serversMap[string(domain)] = []string{userIds[i]} |
| 108 | } else { |
| 109 | serversMap[string(domain)] = append(serversMap[string(domain)], userIds[i]) |
| 110 | } |
| 111 | } |
| 112 | res, err := new_db.GetUsersOfflineOver3Days(userIds) |
| 113 | if err != nil { |
| 114 | util.GetLogger(ctx).Error(err) |
| 115 | } |
| 116 | if len(res) > 0 { |
| 117 | overThreeDays = append(overThreeDays, res...) |
| 118 | } |
| 119 | // map, TODOwaitgroup, |
| 120 | for s, _ := range serversMap { |
| 121 | // server, federation |
| 122 | if s == server { |
| 123 | // |
| 124 | for i, _ := range serversMap[s] { |
| 125 | if value, ok := sync.SoPool.PositiveUsers[serversMap[s][i]]; ok { |
| 126 | if value>>1|0b000 == 0 { |
| 127 | inactiveFor3Days = append(inactiveFor3Days, serversMap[s][i]) |
| 128 | } |
| 129 | } |
| 130 | } |
| 131 | } else { |
| 132 | // |
| 133 | // todo presence |
| 134 | inactives, err := federation.Inactive3Days(ctx, gomatrixserverlib.ServerName(s), serversMap[s]) |
| 135 | if err != nil { |
| 136 | util.GetLogger(ctx).Error(err) |
| 137 | continue |
| 138 | } |
| 139 | inactiveFor3Days = append(inactiveFor3Days, inactives...) |
| 140 | } |
| 141 | } |
| 142 | |
| 143 | return |
| 144 | } |
| 145 | |
| 146 | func GetUserOffline7DayOrInactive7Day(ctx context.Context, federation *gomatrixserverlib.FederationClient, userIds []string, server string) (overSevenDays []string, inactiveFor7Days []string, err error) { |
| 147 | var serversMap = make(map[string][]string) |
no test coverage detected