All files / app/features/messages constants.ts

80.95% Statements 17/21
87.5% Branches 7/8
100% Functions 1/1
94.11% Lines 16/17

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 766x 6x   6x         14x         14x   2x   2x           2x           2x           2x           2x   2x           6x               6x                 6x               17x  
import { MessageThreadCategory } from "proto/conversations_pb";
import { HostRequestStatus } from "proto/messages_pb";
import { MessageFilterType } from "routes";
import { assertNever } from "utils/assertNever";
 
// Maps a URL filter slug to the unified ListMessageThreads request params.
// categories, onlyUnread and onlyArchived are orthogonal; an empty categories
// list means all categories.
export function messageFilterToRequest(filter: MessageFilterType): {
  categories: MessageThreadCategory[];
  onlyUnread: boolean;
  onlyArchived: boolean;
} {
  switch (filter) {
    case "unread":
      return { categories: [], onlyUnread: true, onlyArchived: false };
    case "chats":
      return {
        categories: [MessageThreadCategory.MESSAGE_THREAD_CATEGORY_CHATS],
        onlyUnread: false,
        onlyArchived: false,
      };
    case "hosting":
      return {
        categories: [MessageThreadCategory.MESSAGE_THREAD_CATEGORY_HOSTING],
        onlyUnread: false,
        onlyArchived: false,
      };
    case "surfing":
      return {
        categories: [MessageThreadCategory.MESSAGE_THREAD_CATEGORY_SURFING],
        onlyUnread: false,
        onlyArchived: false,
      };
    case "public-trips":
      return {
        categories: [MessageThreadCategory.MESSAGE_THREAD_CATEGORY_MY_PUBLIC_TRIPS],
        onlyUnread: false,
        onlyArchived: false,
      };
    case "archived":
      return { categories: [], onlyUnread: false, onlyArchived: true };
    case "all":
      return { categories: [], onlyUnread: false, onlyArchived: false };
    default:
      return assertNever(filter);
  }
}
 
export const requestStatusToTransKey = {
  [HostRequestStatus.HOST_REQUEST_STATUS_ACCEPTED]: "host_request_status.accepted",
  [HostRequestStatus.HOST_REQUEST_STATUS_CANCELLED]: "host_request_status.cancelled",
  [HostRequestStatus.HOST_REQUEST_STATUS_CONFIRMED]: "host_request_status.confirmed",
  [HostRequestStatus.HOST_REQUEST_STATUS_PENDING]: "host_request_status.pending",
  [HostRequestStatus.HOST_REQUEST_STATUS_REJECTED]: "host_request_status.rejected",
} as const;
 
export const requestStatusChangedMessageToTransKey = {
  [HostRequestStatus.HOST_REQUEST_STATUS_ACCEPTED]: "control_message.host_request_status_changed.accepted",
  [HostRequestStatus.HOST_REQUEST_STATUS_CANCELLED]: "control_message.host_request_status_changed.cancelled",
  [HostRequestStatus.HOST_REQUEST_STATUS_CONFIRMED]: "control_message.host_request_status_changed.confirmed",
  [HostRequestStatus.HOST_REQUEST_STATUS_REJECTED]: "control_message.host_request_status_changed.rejected",
  // There's no flow in which a request status transitions back to pending.
  [HostRequestStatus.HOST_REQUEST_STATUS_PENDING]: null,
} as const;
 
export const requestStatusChangedMessageToSelfTransKey = {
  [HostRequestStatus.HOST_REQUEST_STATUS_ACCEPTED]: "control_message.host_request_status_changed.accepted_self",
  [HostRequestStatus.HOST_REQUEST_STATUS_CANCELLED]: "control_message.host_request_status_changed.cancelled_self",
  [HostRequestStatus.HOST_REQUEST_STATUS_CONFIRMED]: "control_message.host_request_status_changed.confirmed_self",
  [HostRequestStatus.HOST_REQUEST_STATUS_REJECTED]: "control_message.host_request_status_changed.rejected_self",
  [HostRequestStatus.HOST_REQUEST_STATUS_PENDING]: null,
} as const;
 
export const MARK_LAST_SEEN_TIMEOUT = 500;