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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions