import { ingestInCache } from '~/cache/api/ingestInCache';
import { getActiveClient } from '~/client';

/* begin_public_function
  id: file.update.altText
*/
/**
 * ```js
 * import { FileRepository } from '@amityco/ts-sdk'
 * const updated = await FileRepository.updateAltText(fileId, altText)
 * ```
 *
 * Updates an {@link Amity.File<'image'>['altText']}.
 *
 * @param fileId The ID of the {@link Amity.File<'image'>} to edit
 * @param altText The new alt text for the {@link Amity.File<'image'>}
 * @returns the updated {@link Amity.File<'image'>} object
 *
 * @category File API
 * @async
 */
export const updateAltText = async (
  fileId: Amity.File['fileId'],
  altText: string,
): Promise<boolean> => {
  const client = getActiveClient();
  client.log('file/updateAltText', altText);

  const { data } = await client.http.put<Amity.FilePayload<'image'>>(`/api/v3/files/${fileId}`, {
    altText,
  });

  const cachedAt = client.cache && Date.now();

  if (client.cache) ingestInCache({ files: [data] }, { cachedAt });

  return true;
};
/* end_public_function */
