refac: is_user_active
This commit is contained in:
@@ -762,6 +762,14 @@ class UsersTable:
|
||||
)
|
||||
return count
|
||||
|
||||
@staticmethod
|
||||
def is_active(user: UserModel) -> bool:
|
||||
"""Compute active status from an already-loaded UserModel (no DB hit)."""
|
||||
if user.last_active_at:
|
||||
three_minutes_ago = int(time.time()) - 180
|
||||
return user.last_active_at >= three_minutes_ago
|
||||
return False
|
||||
|
||||
def is_user_active(self, user_id: str, db: Optional[Session] = None) -> bool:
|
||||
with get_db_context(db) as db:
|
||||
user = db.query(User).filter_by(id=user_id).first()
|
||||
|
||||
@@ -204,7 +204,7 @@ async def get_channels(
|
||||
UserIdNameStatusResponse(
|
||||
**{
|
||||
**user.model_dump(),
|
||||
"is_active": Users.is_user_active(user.id, db=db),
|
||||
"is_active": Users.is_active(user),
|
||||
}
|
||||
)
|
||||
for user in Users.get_users_by_user_ids(user_ids, db=db)
|
||||
@@ -424,7 +424,7 @@ async def get_channel_by_id(
|
||||
UserIdNameStatusResponse(
|
||||
**{
|
||||
**user.model_dump(),
|
||||
"is_active": Users.is_user_active(user.id, db=db),
|
||||
"is_active": Users.is_active(user),
|
||||
}
|
||||
)
|
||||
for user in Users.get_users_by_user_ids(user_ids, db=db)
|
||||
@@ -541,7 +541,7 @@ async def get_channel_members_by_id(
|
||||
return {
|
||||
"users": [
|
||||
UserModelResponse(
|
||||
**user.model_dump(), is_active=Users.is_user_active(user.id, db=db)
|
||||
**user.model_dump(), is_active=Users.is_active(user)
|
||||
)
|
||||
for user in users
|
||||
],
|
||||
@@ -576,7 +576,7 @@ async def get_channel_members_by_id(
|
||||
return {
|
||||
"users": [
|
||||
UserModelResponse(
|
||||
**user.model_dump(), is_active=Users.is_user_active(user.id, db=db)
|
||||
**user.model_dump(), is_active=Users.is_active(user)
|
||||
)
|
||||
for user in users
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user