mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-04-23 00:58:32 +02:00
Request fallback name in header
This commit is contained in:
@@ -7,6 +7,7 @@ import { useActiveWorkspaceId } from '../hooks/useActiveWorkspaceId';
|
|||||||
import { useAppRoutes } from '../hooks/useAppRoutes';
|
import { useAppRoutes } from '../hooks/useAppRoutes';
|
||||||
import { useRecentRequests } from '../hooks/useRecentRequests';
|
import { useRecentRequests } from '../hooks/useRecentRequests';
|
||||||
import { useRequests } from '../hooks/useRequests';
|
import { useRequests } from '../hooks/useRequests';
|
||||||
|
import { fallbackRequestName } from '../lib/fallbackRequestName';
|
||||||
import type { ButtonProps } from './core/Button';
|
import type { ButtonProps } from './core/Button';
|
||||||
import { Button } from './core/Button';
|
import { Button } from './core/Button';
|
||||||
import type { DropdownItem, DropdownRef } from './core/Dropdown';
|
import type { DropdownItem, DropdownRef } from './core/Dropdown';
|
||||||
@@ -98,7 +99,7 @@ export function RecentRequestsDropdown({ className }: Pick<ButtonProps, 'classNa
|
|||||||
activeRequest === null && 'text-opacity-disabled italic',
|
activeRequest === null && 'text-opacity-disabled italic',
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{activeRequest?.name ?? 'No Request'}
|
{fallbackRequestName(activeRequest)}
|
||||||
</Button>
|
</Button>
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import { useSidebarHidden } from '../hooks/useSidebarHidden';
|
|||||||
import { useUpdateAnyFolder } from '../hooks/useUpdateAnyFolder';
|
import { useUpdateAnyFolder } from '../hooks/useUpdateAnyFolder';
|
||||||
import { useUpdateAnyRequest } from '../hooks/useUpdateAnyRequest';
|
import { useUpdateAnyRequest } from '../hooks/useUpdateAnyRequest';
|
||||||
import { useUpdateRequest } from '../hooks/useUpdateRequest';
|
import { useUpdateRequest } from '../hooks/useUpdateRequest';
|
||||||
|
import { fallbackRequestName } from '../lib/fallbackRequestName';
|
||||||
import { NAMESPACE_NO_SYNC } from '../lib/keyValueStore';
|
import { NAMESPACE_NO_SYNC } from '../lib/keyValueStore';
|
||||||
import type { Folder, HttpRequest, Workspace } from '../lib/models';
|
import type { Folder, HttpRequest, Workspace } from '../lib/models';
|
||||||
import { isResponseLoading } from '../lib/models';
|
import { isResponseLoading } from '../lib/models';
|
||||||
@@ -427,7 +428,7 @@ function SidebarItems({
|
|||||||
itemId={child.item.id}
|
itemId={child.item.id}
|
||||||
itemName={child.item.name}
|
itemName={child.item.name}
|
||||||
itemFallbackName={
|
itemFallbackName={
|
||||||
child.item.model === 'http_request' ? defaultRequestName(child.item) : 'New Folder'
|
child.item.model === 'http_request' ? fallbackRequestName(child.item) : 'New Folder'
|
||||||
}
|
}
|
||||||
itemModel={child.item.model}
|
itemModel={child.item.model}
|
||||||
onMove={handleMove}
|
onMove={handleMove}
|
||||||
@@ -471,7 +472,7 @@ type SidebarItemProps = {
|
|||||||
className?: string;
|
className?: string;
|
||||||
itemId: string;
|
itemId: string;
|
||||||
itemName: string;
|
itemName: string;
|
||||||
itemFallbackName: string | null;
|
itemFallbackName: string;
|
||||||
itemModel: string;
|
itemModel: string;
|
||||||
useProminentStyles?: boolean;
|
useProminentStyles?: boolean;
|
||||||
selected?: boolean;
|
selected?: boolean;
|
||||||
@@ -689,7 +690,7 @@ const SidebarItem = forwardRef(function SidebarItem(
|
|||||||
onKeyDown={handleInputKeyDown}
|
onKeyDown={handleInputKeyDown}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<span className="truncate">{itemName || itemFallbackName || 'New Request'}</span>
|
<span className="truncate">{itemName || itemFallbackName}</span>
|
||||||
)}
|
)}
|
||||||
{latestResponse && (
|
{latestResponse && (
|
||||||
<div className="ml-auto">
|
<div className="ml-auto">
|
||||||
@@ -776,21 +777,3 @@ function DraggableSidebarItem({
|
|||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function defaultRequestName(r: HttpRequest): string | null {
|
|
||||||
if (!r.url) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
const fixedUrl = r.url.match(/^https?:\/\//) ? r.url : 'http://' + r.url;
|
|
||||||
|
|
||||||
try {
|
|
||||||
const url = new URL(fixedUrl);
|
|
||||||
const pathname = url.pathname === '/' ? '' : url.pathname;
|
|
||||||
return `${url.host}${pathname}`;
|
|
||||||
} catch (_) {
|
|
||||||
// Nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|||||||
25
src-web/lib/fallbackRequestName.ts
Normal file
25
src-web/lib/fallbackRequestName.ts
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
import type { HttpRequest } from './models';
|
||||||
|
|
||||||
|
export function fallbackRequestName(r: HttpRequest | null): string {
|
||||||
|
if (r == null) return '';
|
||||||
|
|
||||||
|
if (r.name) {
|
||||||
|
return r.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (r.url.trim() === '') {
|
||||||
|
return 'New Request';
|
||||||
|
}
|
||||||
|
|
||||||
|
const fixedUrl = r.url.match(/^https?:\/\//) ? r.url : 'http://' + r.url;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const url = new URL(fixedUrl);
|
||||||
|
const pathname = url.pathname === '/' ? '' : url.pathname;
|
||||||
|
return `${url.host}${pathname}`;
|
||||||
|
} catch (_) {
|
||||||
|
// Nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
return '';
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user