{"version":3,"file":"index.mjs","sources":["../../../../src/clients/preferences/index.ts"],"sourcesContent":["import { ChannelType } from \"@knocklabs/types\";\n\nimport { ApiResponse } from \"../../api\";\nimport Knock from \"../../knock\";\n\nimport {\n  ChannelTypePreferences,\n  PreferenceOptions,\n  PreferenceSet,\n  SetPreferencesProperties,\n  WorkflowPreferenceSetting,\n  WorkflowPreferences,\n} from \"./interfaces\";\n\nconst DEFAULT_PREFERENCE_SET_ID = \"default\";\n\nfunction buildUpdateParam(param: WorkflowPreferenceSetting) {\n  if (typeof param === \"object\") {\n    return param;\n  }\n\n  return { subscribed: param };\n}\n\nclass Preferences {\n  private instance: Knock;\n\n  constructor(instance: Knock) {\n    this.instance = instance;\n  }\n\n  /**\n   * @deprecated Use `user.getAllPreferences()` instead\n   */\n  async getAll() {\n    this.instance.failIfNotAuthenticated();\n\n    const result = await this.instance.client().makeRequest({\n      method: \"GET\",\n      url: `/v1/users/${this.instance.userId}/preferences`,\n    });\n\n    return this.handleResponse(result);\n  }\n\n  /**\n   * @deprecated Use `user.getPreferences()` instead\n   */\n  async get(options: PreferenceOptions = {}) {\n    this.instance.failIfNotAuthenticated();\n\n    const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n\n    const result = await this.instance.client().makeRequest({\n      method: \"GET\",\n      url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}`,\n    });\n\n    return this.handleResponse(result);\n  }\n\n  /**\n   * @deprecated Use `user.setPreferences(preferenceSet, options)` instead\n   */\n  async set(\n    preferenceSet: SetPreferencesProperties,\n    options: PreferenceOptions = {},\n  ) {\n    this.instance.failIfNotAuthenticated();\n\n    const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n\n    const result = await this.instance.client().makeRequest({\n      method: \"PUT\",\n      url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}`,\n      data: preferenceSet,\n    });\n\n    return this.handleResponse(result);\n  }\n\n  /**\n   * @deprecated Use `user.setPreferences(preferenceSet, options)` instead\n   */\n  async setChannelTypes(\n    channelTypePreferences: ChannelTypePreferences,\n    options: PreferenceOptions = {},\n  ) {\n    this.instance.failIfNotAuthenticated();\n    const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n\n    const result = await this.instance.client().makeRequest({\n      method: \"PUT\",\n      url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}/channel_types`,\n      data: channelTypePreferences,\n    });\n\n    return this.handleResponse(result);\n  }\n\n  /**\n   * @deprecated Use `user.setPreferences(preferenceSet, options)` instead\n   */\n  async setChannelType(\n    channelType: ChannelType,\n    setting: boolean,\n    options: PreferenceOptions = {},\n  ) {\n    this.instance.failIfNotAuthenticated();\n    const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n\n    const result = await this.instance.client().makeRequest({\n      method: \"PUT\",\n      url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}/channel_types/${channelType}`,\n      data: { subscribed: setting },\n    });\n\n    return this.handleResponse(result);\n  }\n\n  /**\n   * @deprecated Use `user.setPreferences(preferenceSet, options)` instead\n   */\n  async setWorkflows(\n    workflowPreferences: WorkflowPreferences,\n    options: PreferenceOptions = {},\n  ) {\n    this.instance.failIfNotAuthenticated();\n    const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n\n    const result = await this.instance.client().makeRequest({\n      method: \"PUT\",\n      url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}/workflows`,\n      data: workflowPreferences,\n    });\n\n    return this.handleResponse(result);\n  }\n\n  /**\n   * @deprecated Use `user.setPreferences(preferenceSet, options)` instead\n   */\n  async setWorkflow(\n    workflowKey: string,\n    setting: WorkflowPreferenceSetting,\n    options: PreferenceOptions = {},\n  ) {\n    this.instance.failIfNotAuthenticated();\n\n    const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n    const params = buildUpdateParam(setting);\n\n    const result = await this.instance.client().makeRequest({\n      method: \"PUT\",\n      url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}/workflows/${workflowKey}`,\n      data: params,\n    });\n\n    return this.handleResponse(result);\n  }\n\n  /**\n   * @deprecated Use `user.setPreferences(preferenceSet, options)` instead\n   */\n  async setCategories(\n    categoryPreferences: WorkflowPreferences,\n    options: PreferenceOptions = {},\n  ) {\n    this.instance.failIfNotAuthenticated();\n\n    const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n\n    const result = await this.instance.client().makeRequest({\n      method: \"PUT\",\n      url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}/categories`,\n      data: categoryPreferences,\n    });\n\n    return this.handleResponse(result);\n  }\n\n  /**\n   * @deprecated Use `user.setPreferences(preferenceSet, options)` instead\n   */\n  async setCategory(\n    categoryKey: string,\n    setting: WorkflowPreferenceSetting,\n    options: PreferenceOptions = {},\n  ) {\n    this.instance.failIfNotAuthenticated();\n\n    const preferenceSetId = options.preferenceSet || DEFAULT_PREFERENCE_SET_ID;\n    const params = buildUpdateParam(setting);\n\n    const result = await this.instance.client().makeRequest({\n      method: \"PUT\",\n      url: `/v1/users/${this.instance.userId}/preferences/${preferenceSetId}/categories/${categoryKey}`,\n      data: params,\n    });\n\n    return this.handleResponse(result);\n  }\n\n  private handleResponse(response: ApiResponse) {\n    if (response.statusCode === \"error\") {\n      throw new Error(response.error || response.body);\n    }\n\n    return response.body as PreferenceSet;\n  }\n}\n\nexport default Preferences;\n"],"names":["DEFAULT_PREFERENCE_SET_ID","buildUpdateParam","param","Preferences","instance","__publicField","result","options","preferenceSetId","preferenceSet","channelTypePreferences","channelType","setting","workflowPreferences","workflowKey","params","categoryPreferences","categoryKey","response"],"mappings":"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"}