[GH-ISSUE #221] [Breakpoint] #4 Request / Response Editor & Breakpoint View (UI Only) #220

Open
opened 2026-03-03 19:49:15 +03:00 by kerem · 6 comments
Owner

Originally created by @NghiaTranUIT on GitHub (Apr 10, 2023).
Original GitHub issue: https://github.com/ProxymanApp/proxyman-windows-linux/issues/221

Originally assigned to: @kics223w1 on GitHub.

Description

CleanShot 2023-04-10 at 13 41 30@2x

⚠️ Ping @NghiaTranUIT to get the BreakpointData class from macOS. It's responsible to handle all data changes from the Request/Response Editor.

⚠️ This ticket only works on the UI and BreakpointData. We don't actually do the breakpoint to modify the Request/Response (It's for the next ticket)

Waiting Breakpoint List View

  • Implement the DataGrid as the Flow Main Table View, which basic columns (See the screenshot)
  • No need to support the Customize Columns.
  • Show all waiting breakpoints in the Grid
  • Select a breakpoint -> Update the Request / Response Editor
  • Can select multiple breakpoints, but render the first item in the selected array.

Bottom Bar

  • Execute button with dropdown menu
  • Cancel button with dropdown menu
  • Continue button with dropdown menu
  • Work with single or multiple breakpoints
  • Disable buttons and menu if there is no selection

Request & Response Editor

  • ⚠️ Important: Write a Request Editor in a way that we can reuse it later (For the Compose View)
    CleanShot 2023-04-10 at 13 49 38@2x

⚠️ Important: Each Tab: Header, Query, Body, ... can be reused in the Request & Response.

  • Select a breakpoint -> If it's a Request Breakpoint -> Show the Request Editor (Hide the Response Editor)
  • Select a breakpoint -> If it's a Response Response -> Show the Request View (Read-only), and show the Response Editor
    CleanShot 2023-04-10 at 13 52 11@2x

Header Tab

Originally created by @NghiaTranUIT on GitHub (Apr 10, 2023). Original GitHub issue: https://github.com/ProxymanApp/proxyman-windows-linux/issues/221 Originally assigned to: @kics223w1 on GitHub. ## Description ![CleanShot 2023-04-10 at 13 41 30@2x](https://user-images.githubusercontent.com/5878421/230843284-5ea8c2bb-6ef4-4c87-b936-012ead3196e5.jpg) ⚠️ Ping @NghiaTranUIT to get the `BreakpointData` class from macOS. It's responsible to handle all data changes from the Request/Response Editor. ⚠️ This ticket only works on the UI and `BreakpointData`. We don't actually do the breakpoint to modify the Request/Response (It's for the next ticket) ## Waiting Breakpoint List View - Implement the DataGrid as the Flow Main Table View, which basic columns (See the screenshot) - No need to support the Customize Columns. - Show all waiting breakpoints in the Grid - Select a breakpoint -> Update the Request / Response Editor - Can select multiple breakpoints, but render the first item in the selected array. ## Bottom Bar - Execute button with dropdown menu - Cancel button with dropdown menu - Continue button with dropdown menu - Work with single or multiple breakpoints - Disable buttons and menu if there is no selection ## Request & Response Editor - ⚠️ Important: Write a Request Editor in a way that we can reuse it later (For the Compose View) ![CleanShot 2023-04-10 at 13 49 38@2x](https://user-images.githubusercontent.com/5878421/230844254-41e8238b-94f9-4d63-86af-8037a80c6364.jpg) ⚠️ Important: Each Tab: Header, Query, Body, ... can be reused in the Request & Response. - Select a breakpoint -> If it's a Request Breakpoint -> Show the Request Editor (Hide the Response Editor) - Select a breakpoint -> If it's a Response Response -> Show the Request View (Read-only), and show the Response Editor ![CleanShot 2023-04-10 at 13 52 11@2x](https://user-images.githubusercontent.com/5878421/230844880-1ada1c91-9a3e-4583-85c2-e9a9d7b2a0a0.jpg) ### Header Tab
Author
Owner

@NghiaTranUIT commented on GitHub (Apr 10, 2023):

Header Tab

  • When select a Breakpoint, Header Tab Request will render the header of the Request or Response
  • Make sure it can be reused in the Request Editor, Response Editor in the Breakpoint, and the Compose View
  • It can be reused with other similar tabs, such as Query and Form
    CleanShot 2023-04-10 at 13 54 34@2x
  • Tab to jump to the next field: Left -> Right -> Top -> Down -> Jump to the start when it ends

https://user-images.githubusercontent.com/5878421/230845905-fa5d2bee-0bd9-4b4d-a7bc-102394b7b836.mp4

  • Click on the Trash Icon to delete the row
  • No Need to implement the auto-completion (We implement it later)
  • When the text field is ended editing -> Update the BreakpointData model

On Request Breakpoint

  • Make sure the Header is editable

On Response Breakpoint

  • Header Tab in the Request is Readonly
  • Header Tab in the Response is editable
<!-- gh-comment-id:1501473764 --> @NghiaTranUIT commented on GitHub (Apr 10, 2023): ### Header Tab - When select a Breakpoint, Header Tab Request will render the header of the Request or Response - Make sure it can be reused in the Request Editor, Response Editor in the Breakpoint, and the Compose View - It can be reused with other similar tabs, such as Query and Form ![CleanShot 2023-04-10 at 13 54 34@2x](https://user-images.githubusercontent.com/5878421/230845504-a6ec683b-5ddd-432b-a181-dadc3bd017fe.jpg) - Tab to jump to the next field: Left -> Right -> Top -> Down -> Jump to the start when it ends https://user-images.githubusercontent.com/5878421/230845905-fa5d2bee-0bd9-4b4d-a7bc-102394b7b836.mp4 - Click on the Trash Icon to delete the row - No Need to implement the auto-completion (We implement it later) - When the text field is ended editing -> Update the `BreakpointData` model ### On Request Breakpoint - Make sure the Header is editable ### On Response Breakpoint - Header Tab in the Request is Readonly - Header Tab in the Response is editable
Author
Owner

@NghiaTranUIT commented on GitHub (Apr 10, 2023):

Query Tab on the Request

  • Must Subclass the Header Tab so we can reuse all Header tab logic and behavior.
  • When the URL is updated -> It also updates the Query Table
  • When the Query is updated (The text field is ended editing) -> Update the URL

https://user-images.githubusercontent.com/5878421/230846518-284cca6d-16da-4197-88cf-209314a9608f.mp4

  • Make sure the Query is updated with the BreakpointData model
<!-- gh-comment-id:1501478226 --> @NghiaTranUIT commented on GitHub (Apr 10, 2023): ### Query Tab on the Request - Must Subclass the Header Tab so we can reuse all Header tab logic and behavior. - When the URL is updated -> It also updates the Query Table - When the Query is updated (The text field is ended editing) -> Update the URL https://user-images.githubusercontent.com/5878421/230846518-284cca6d-16da-4197-88cf-209314a9608f.mp4 - Make sure the Query is updated with the `BreakpointData` model
Author
Owner

@NghiaTranUIT commented on GitHub (Apr 10, 2023):

Method and URL

  • If it's a Request Breakpoint -> The Method dropdown and URL are editable.
  • If it's a Response Breakpoint -> The method and URL are read-only

CleanShot 2023-04-10 at 14 05 43@2x
CleanShot 2023-04-10 at 14 06 15@2x

  • Update the URL will update the Query Tab (When the text field is end editing, don't change every time the user is typing)

  • Able to select the HTTP Method

  • Validate the URL -> Disable the Execute button and show the error icon
    CleanShot 2023-04-10 at 14 09 04@2x

  • Make sure the URL, Method are updated to the BreakpointData model

<!-- gh-comment-id:1501484618 --> @NghiaTranUIT commented on GitHub (Apr 10, 2023): ## Method and URL - If it's a Request Breakpoint -> The Method dropdown and URL are editable. - If it's a Response Breakpoint -> The method and URL are read-only ![CleanShot 2023-04-10 at 14 05 43@2x](https://user-images.githubusercontent.com/5878421/230847000-9450df8a-be7b-4fe1-bd1b-549d3e234c94.jpg) ![CleanShot 2023-04-10 at 14 06 15@2x](https://user-images.githubusercontent.com/5878421/230847009-0e459398-1997-4ead-abde-678aaa36a9ff.jpg) - Update the URL will update the Query Tab (When the text field is end editing, don't change every time the user is typing) - Able to select the HTTP Method - Validate the URL -> Disable the Execute button and show the error icon ![CleanShot 2023-04-10 at 14 09 04@2x](https://user-images.githubusercontent.com/5878421/230847397-786bf6a7-321d-4927-8647-9239d7c0f6ff.jpg) - Make sure the URL, Method are updated to the `BreakpointData` model
Author
Owner

@NghiaTranUIT commented on GitHub (Apr 10, 2023):

Body tab

  • The body tab can be reused in the Request Editor and Response Editor
  • Show the correct syntax highlighting, maybe JSON, Text, or HTML, ... We can reuse the same logic from the Main Table View
  • If it's a Request Breakpoint -> Body tab is read-only
  • If it's a Response Breakpoint -> Body Tab is Editable
  • Make sure we update the Body to the BreakpointData model
<!-- gh-comment-id:1501487489 --> @NghiaTranUIT commented on GitHub (Apr 10, 2023): ## Body tab - The body tab can be reused in the Request Editor and Response Editor - Show the correct syntax highlighting, maybe JSON, Text, or HTML, ... We can reuse the same logic from the Main Table View - If it's a Request Breakpoint -> Body tab is read-only - If it's a Response Breakpoint -> Body Tab is Editable - Make sure we update the Body to the `BreakpointData` model
Author
Owner

@NghiaTranUIT commented on GitHub (Apr 10, 2023):

Form Tab

  • Reuse the Header Tab -> Have all logic + behavior from the Header Tab

  • If the Body of the Request is a form format (ContentType = application/x-www-form-urlencoded), show the Form tab
    CleanShot 2023-04-10 at 14 14 37@2x
    CleanShot 2023-04-10 at 14 13 55@2x

  • Update the Form entry will update the Body Tab

  • Update the Body will update the form entry if need

https://user-images.githubusercontent.com/5878421/230848697-4ce2af9e-5f04-4e2a-8f6c-19f2f89adfb5.mp4

<!-- gh-comment-id:1501491270 --> @NghiaTranUIT commented on GitHub (Apr 10, 2023): ## Form Tab - Reuse the Header Tab -> Have all logic + behavior from the Header Tab - If the Body of the Request is a form format (ContentType = application/x-www-form-urlencoded), show the Form tab ![CleanShot 2023-04-10 at 14 14 37@2x](https://user-images.githubusercontent.com/5878421/230848508-4c991bec-ad13-4efc-9952-40ad40df8ddb.jpg) ![CleanShot 2023-04-10 at 14 13 55@2x](https://user-images.githubusercontent.com/5878421/230848518-fac0afbf-3ab2-4068-a45e-3e60ad9b2462.jpg) - Update the Form entry will update the Body Tab - Update the Body will update the form entry if need https://user-images.githubusercontent.com/5878421/230848697-4ce2af9e-5f04-4e2a-8f6c-19f2f89adfb5.mp4
Author
Owner

@NghiaTranUIT commented on GitHub (Apr 10, 2023):

Other Tab

  • If it's a Response Breakpoint -> Show the Other Tab
  • Allow the user to change the Status Code
  • Show the Reason-Phrase when end editing

https://user-images.githubusercontent.com/5878421/230849154-20171b3f-8b04-4df4-a49e-82e939f5cca4.mp4

<!-- gh-comment-id:1501493632 --> @NghiaTranUIT commented on GitHub (Apr 10, 2023): ## Other Tab - If it's a Response Breakpoint -> Show the Other Tab - Allow the user to change the Status Code - Show the Reason-Phrase when end editing https://user-images.githubusercontent.com/5878421/230849154-20171b3f-8b04-4df4-a49e-82e939f5cca4.mp4 - We can use this lib: https://www.npmjs.com/package/http-status to get the Status code Reason Phrase - Make sure it updates the `Breakpoint` model
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/proxyman-windows-linux#220
No description provided.