Skip to content

Feat: Allow users to rename image files #1192

@codex-yv

Description

@codex-yv

Describe the feature

Description

I have added a feature that allows users to rename images directly from the App. Users no longer need to navigate to the file path to rename an image.

Current Problem

  • There is no option to rename an image directly within the app.
  • If a user wants to rename an image, they must locate the file path and rename it using the traditional method.

Expected Feature

  • The app should provide an option to rename images internally, so users do not have to worry about file paths or manually opening folders.

Implementation

Backend

  • Added a PUT endpoint: "/rename-image" in backend/app/routes/images.py. It accepts an image ID and a new name, and returns a success status and message.
class RenameImageRequest(BaseModel):
    image_id: str
    rename: str
class RenameImageResponse(BaseModel):
    success: bool
    message: str
  • Used os module to rename the Image file.
folder_path = os.path.dirname(image_path)
extention = os.path.splitext(image_path)[1]
new_file = os.path.join(folder_path, rename+extention)
os.rename(image_path, new_file)
  • The sync microservice automatically updates the database with the new image name.

Frontend

  • Added API endpoint in apiEndpoints.ts and implemented the renameImage function in frontend/src/api/api-functions/images.ts
export const renameImage = async (
  imageId: string,
  newName: string,
): Promise<{ success: boolean; message: string }> => {
  const response = await apiClient.put(imagesEndpoints.renameImage, {
    image_id: imageId,
    rename: newName,
  });
  return response.data;
};
  • Added Rename functionality to MediaInfoPanel.tsx
  • Disabled shortcut keys while renaming an image (e.g., Rotation r, Media Info Panel i, etc.).

Precautions

  • Renaming will fail if the new image name contains unsupported special characters (e.g., *, ^, !, etc.).

Add ScreenShots

Screenshots

Before

rename_before.mp4

After

rename_after.mp4

Record

  • I agree to follow this project's Code of Conduct
  • I want to work on this issue

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions