diff --git a/README.md b/README.md
index f0092b6a3..eff424e00 100644
--- a/README.md
+++ b/README.md
@@ -44,7 +44,7 @@
-#### **Contact**
+#### **Support**
[](https://hoppscotch.io/discord) [](https://hoppscotch.io/telegram)
@@ -76,83 +76,47 @@
โก๏ธ **Fast:** Send requests and get/copy responses in real-time.
-
- HTTP Methods
+**HTTP Methods**
----
+- [x] `GET` - Requests retrieve resource information
+- [x] `POST` - The server creates a new entry in a database
+- [x] `PUT` - Updates an existing resource
+- [x] `PATCH` - Very similar to `PUT` but makes a partial update on a resource
+- [x] `DELETE` - Deletes resource or related component
+- [x] `HEAD` - Retrieve response headers identical to those of a GET request, but without the response body.
+- [x] `CONNECT` - Establishes a tunnel to the server identified by the target resource
+- [x] `OPTIONS` - Describe the communication options for the target resource
+- [x] `TRACE` - Performs a message loop-back test along the path to the target resource
+- [x] `` - Some APIs use custom request methods such as `LIST`. Type in your custom methods.
-- `GET` - Requests retrieve resource information
-- `HEAD` - Retrieve response headers identical to those of a GET request, but without the response body.
-- `POST` - The server creates a new entry in a database
-- `PUT` - Updates an existing resource
-- `DELETE` - Deletes resource or related component
-- `CONNECT` - Establishes a tunnel to the server identified by the target resource
-- `OPTIONS` - Describe the communication options for the target resource
-- `TRACE` - Performs a message loop-back test along the path to the target resource
-- `PATCH` - Very similar to `PUT` but makes a partial update on a resource
-- `` - Some APIs use custom request methods such as `LIST`. Type in your custom methods.
+๐ **Make it yours:** Customizable combinations for background, foreground and accent colors โ [customize now โจ](https://hoppscotch.io/settings).
----
+**Theming**
-
+- [x] Choose theme: System (default), Light, Dark and Black
+- [x] Choose accent color: Green (default), Teal, Blue, Indigo, Purple, Yellow, Orange, Red and Pink
+- [x] Distraction free Zen mode
-๐ **Make it yours:** Customizable combinations for background, foreground and accent colors. [Customize now โจ](https://hoppscotch.io/settings)
-
-
- Theming
-
----
-
-- Choose theme: System (default), Light, Dark and Black
-- Choose accent color: Green (default), Teal, Blue, Indigo, Purple, Yellow, Orange, Red and Pink
-- Distraction free Zen mode
-
-
-
-
-
----
-
-
-
-_Customized themes are synced with local session storage_
+_Customized themes are synced with cloud / local session_
๐ฅ **PWA:** Install as a [PWA](https://developers.google.com/web/progressive-web-apps) on your device.
-
- Features
-
----
-
-- Instant loading with Service Workers
-- Offline support
-- Low RAM/memory and CPU usage
-- Add to Home Screen
-- Desktop PWA
-
----
-
-
+- [x] Instant loading with Service Workers
+- [x] Offline support
+- [x] Low RAM/memory and CPU usage
+- [x] Add to Home Screen
+- [x] Desktop PWA
๐ **Request:** Retrieve response from endpoint instantly.
-- Choose `method`
-- Enter `URL`
-- Send
+1. Choose `method`
+2. Enter `URL`
+3. Send
-
- Features
-
----
-
-- Copy/share public "Share URL"
-- Generate/copy request code snippets for 10+ languages and frameworks
-- Import `cURL`
-- Label requests
-
----
-
-
+- [x] Copy/share public "Share URL"
+- [x] Generate/copy request code snippets for 10+ languages and frameworks
+- [x] Import `cURL`
+- [x] Label requests
๐ **WebSocket:** Establish full-duplex communication channels over a single TCP connection.
@@ -164,37 +128,19 @@ _Customized themes are synced with local session storage_
๐ฎ **GraphQL:** GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data.
-
- Features
+- [x] Set endpoint and get schema
+- [x] Multi-column docs
+- [x] Set custom request headers
+- [x] Query schema
+- [x] Get query response
----
+๐ **Authorization:** Allows to identify the end user.
-- Set endpoint and get schemas
-- Multi-column docs
-- Set custom request headers
-- Query schema
-- Get query response
-
----
-
-
-
-๐ **Authentication:** Allows to identify the end user.
-
-
- Types
-
----
-
-- None
-- Basic
-- Bearer Token
-- OAuth 2.0
-- OIDC Access Token/PKCE
-
----
-
-
+- [x] None
+- [x] Basic
+- [x] Bearer Token
+- [x] OAuth 2.0
+- [x] OIDC Access Token/PKCE
๐ข **Headers:** Describes the format the body of your request is being sent as.
@@ -202,127 +148,55 @@ _Customized themes are synced with local session storage_
๐ **Request Body:** Used to send and receive data via the REST API.
-
- Options
-
----
-
-- Set `Content Type`
-- Add or remove Parameter list
-- Toggle between key-value and RAW input parameter list
-
----
-
-
+- [x] Set `Content Type`
+- [x] FormData, JSON and many more
+- [x] Toggle between key-value and RAW input parameter list
๐ **Response:** Contains the status line, headers and the message/response body.
-
- Features
-
----
-
-- Copy response to clipboard
-- Download response as a file
-- View response headers
-- View raw and preview of HTML, image, JSON, XML responses
-
----
-
-
+- [x] Copy response to clipboard
+- [x] Download response as a file
+- [x] View response headers
+- [x] View raw and preview of HTML, image, JSON, XML responses
โฐ **History:** Request entries are synced with cloud / local session storage to restore with a single click.
๐ **Collections:** Keep your API requests organized with collections and folders. Reuse them with a single click.
-
- Features
-
----
-
-- Unlimited collections, folders and requests
-- Nested folders
-- Export as / import from GitHub gist
-
----
-
-
+- [x] Unlimited collections, folders and requests
+- [x] Nested folders
+- [x] Export and import as file or GitHub gist
_Collections are synced with cloud / local session storage_
๐ **Proxy:** Enable Proxy Mode from Settings to access blocked APIs.
-
- Features
-
----
-
-- Hide your IP address
-- Fixes [`CORS`](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) (Cross Origin Resource Sharing) issues
-- Access APIs served in non-HTTPS (`http://`)
-- Use custom Proxy URL
-
----
-
-
+- [x] Hide your IP address
+- [x] Fixes [`CORS`](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) (Cross Origin Resource Sharing) issues
+- [x] Access APIs served in non-HTTPS `[http://]` endpoints
+- [x] Use your own Proxy URL
_Official proxy server is hosted by Hoppscotch - **[GitHub](https://github.com/hoppscotch/proxyscotch)** - **[Privacy Policy](https://docs.hoppscotch.io/privacy)**_
๐ **Pre-Request Scripts ฮฒ:** Snippets of code associated with a request that are executed before the request is sent.
-
- Use-cases
-
----
-
-- Initialize environment variables
-- Include timestamp in the request headers
-- Send a random alphanumeric string in the URL parameters
-
----
-
-
+- [x] Set environment variables
+- [x] Include timestamp in the request headers
+- [x] Send a random alphanumeric string in the URL parameters
+- [x] Any JavaScript functions
๐ **API Documentation:** Create and share dynamic API documentation easily, quickly.
-
- Usage
-
----
-
1. Add your requests to Collections and Folders
2. Export Collections and easily share your APIs with the rest of your team
3. Import Collections and Generate Documentation on-the-go
----
-
-
-
โจ๏ธ **Keyboard Shortcuts:** Optimized for efficiency.
> **[Shortcuts](https://docs.hoppscotch.io/features/shortcuts)**
๐ **i18n:** Experience the app in your own language.
-
- Usage
-
----
-
-1. Scroll down to the footer
-2. Click "Choose Language" icon button
-3. Select your language from the menu
-
----
-
-
-
-_Keep in mind: Translations aren't available for all source and target language combinations_
-
-**To provide a localized experience for users around the world, you can add you own translations.**
-
-_**All `i18n` contributions are welcome to `i18n` [branch](https://github.com/hoppscotch/hoppscotch/tree/i18n) only!**_
-
๐ฆ **Add-ons:** Official add-ons for hoppscotch.
- **[Proxy](https://github.com/hoppscotch/proxyscotch)** - A simple proxy server created for Hoppscotch
@@ -335,50 +209,35 @@ _**All `i18n` contributions are welcome to `i18n` [branch](https://github.com/ho
- **[Hopp-Doc-Gen](https://github.com/hoppscotch/hopp-doc-gen)** - An API doc generator CLI for Hoppscotch
-_Add-ons are developed and maintained under **[Official Hoppscotch Organization](https://github.com/hoppscotch)**._
+_Add-ons are developed and maintained under **[Hoppscotch Organization](https://github.com/hoppscotch)**._
-โ๏ธ **Auth + Sync:** Sign in and sync in real-time.
+โ๏ธ **Auth + Sync:** Sign in and sync your data in real-time.
**Sign in with**
-- Google
-- GitHub
+- [x] GitHub
+- [x] Google
+- [x] Email
-**Sync**
+**Synchronize your data**
-- History
-- Collections
-- Environments
+- [x] History
+- [x] Collections
+- [x] Environments
+- [x] Settings
โ
**Post-Request Tests ฮฒ:** Write tests associated with a request that are executed after the request response.
-
- Use-cases
-
----
-
-- Check the status code as an integer
-- Filter response headers
-- Parse the response data
-
----
-
-
+- [x] Check the status code as an integer
+- [x] Filter response headers
+- [x] Parse the response data
+- [x] Any JavaScript functions
๐ฑ **Environments** : Environment variables allow you to store and reuse values in your requests and scripts.
-
- Features
-
----
-
-- Unlimited environments and variables
-- Initialize through pre-request script
-- Export as / import from GitHub gist
-
----
-
-
+- [x] Unlimited environments and variables
+- [x] Initialize through pre-request script
+- [x] Export as / import from GitHub gist
Use-cases
@@ -395,20 +254,11 @@ _Add-ons are developed and maintained under **[Official Hoppscotch Organization]
๐จโ๐ฉโ๐งโ๐ฆ **Teams ฮฒ:** Helps you collaborate across your team to design, develop, and test APIs faster.
-
- Features
+- [x] Unlimited team collections and shared requests
+- [x] Unlimited team members
+- [x] User roles
----
-
-- Unlimited team collections and shared requests
-- Unlimited team members
-- User roles
-
----
-
-
-
-**To find out more, please check out our [Documentation](https://docs.hoppscotch.io).**
+**For more features, please read our [documentation](https://docs.hoppscotch.io).**
## **Demo**
@@ -476,7 +326,7 @@ Please read [`CONTRIBUTING`](CONTRIBUTING.md) for details on our [`CODE OF CONDU
## **Continuous Integration**
-We use [GitHub Actions](https://github.com/features/actions) for continuous integration. Check out our [Build Workflows](https://github.com/hoppscotch/hoppscotch/actions).
+We use [GitHub Actions](https://github.com/features/actions) for continuous integration. Check out our [build workflows](https://github.com/hoppscotch/hoppscotch/actions).
## **Changelog**
@@ -484,7 +334,7 @@ See the [`CHANGELOG`](CHANGELOG.md) file for details.
## **Authors**
-This project exists thanks to all the people who contribute [[Contribute](CONTRIBUTING.md)].
+This project exists thanks to all the people who contribute โ [make a contribution](CONTRIBUTING.md).
diff --git a/components/collections/my/Request.vue b/components/collections/my/Request.vue
index d6c7c9b4e..fbf8cb844 100644
--- a/components/collections/my/Request.vue
+++ b/components/collections/my/Request.vue
@@ -49,8 +49,9 @@
@@ -120,7 +121,11 @@
import { defineComponent } from "@nuxtjs/composition-api"
import { translateToNewRequest } from "~/helpers/types/HoppRESTRequest"
import { useReadonlyStream } from "~/helpers/utils/composables"
-import { restSaveContext$, setRESTRequest } from "~/newstore/RESTSession"
+import {
+ restSaveContext$,
+ setRESTRequest,
+ setRESTSaveContext,
+} from "~/newstore/RESTSession"
export default defineComponent({
props: {
@@ -137,7 +142,7 @@ export default defineComponent({
picked: { type: Object, default: () => {} },
},
setup() {
- const active = useReadonlyStream(restSaveContext$)
+ const active = useReadonlyStream(restSaveContext$, null)
return {
active,
}
@@ -167,6 +172,15 @@ export default defineComponent({
},
methods: {
selectRequest() {
+ if (
+ this.active &&
+ this.active.originLocation === "user-collection" &&
+ this.active.folderPath === this.folderPath &&
+ this.active.requestIndex === this.requestIndex
+ ) {
+ setRESTSaveContext(null)
+ return
+ }
if (this.$props.saveRequest)
this.$emit("select", {
picked: {
diff --git a/components/collections/teams/Request.vue b/components/collections/teams/Request.vue
index b4acdb3f6..a0b86404f 100644
--- a/components/collections/teams/Request.vue
+++ b/components/collections/teams/Request.vue
@@ -40,7 +40,11 @@
>
{{ request.name }}
@@ -109,7 +113,11 @@
import { defineComponent } from "@nuxtjs/composition-api"
import { translateToNewRequest } from "~/helpers/types/HoppRESTRequest"
import { useReadonlyStream } from "~/helpers/utils/composables"
-import { restSaveContext$, setRESTRequest } from "~/newstore/RESTSession"
+import {
+ restSaveContext$,
+ setRESTRequest,
+ setRESTSaveContext,
+} from "~/newstore/RESTSession"
export default defineComponent({
props: {
@@ -125,7 +133,7 @@ export default defineComponent({
picked: { type: Object, default: () => {} },
},
setup() {
- const active = useReadonlyStream(restSaveContext$)
+ const active = useReadonlyStream(restSaveContext$, null)
return {
active,
}
@@ -153,6 +161,14 @@ export default defineComponent({
},
methods: {
selectRequest() {
+ if (
+ this.active &&
+ this.active.originLocation === "team-collection" &&
+ this.active.requestID === this.requestIndex
+ ) {
+ setRESTSaveContext(null)
+ return
+ }
if (this.$props.saveRequest)
this.$emit("select", {
picked: {
diff --git a/locales/en.json b/locales/en.json
index bdd2d4153..cd1c801f3 100644
--- a/locales/en.json
+++ b/locales/en.json
@@ -43,7 +43,6 @@
"copy": "Copy",
"documentation": "Documentation",
"help": "Help & feedback",
- "reload": "Reload",
"home": "Home",
"invite": "Invite",
"invite_description": "Hoppscotch is an open source API development ecosystem. We designed a simple and intuitive interface for creating and managing your APIs. Hoppscotch is a tool that helps you build, test, document and share your APIs.",
@@ -53,6 +52,7 @@
"name": "Hoppscotch",
"new_version_found": "New version found. Refresh to update.",
"proxy_privacy_policy": "Proxy privacy policy",
+ "reload": "Reload",
"search": "Search",
"share": "Share",
"shortcuts": "Shortcuts",
@@ -98,8 +98,8 @@
"my_collections": "My Collections",
"name": "My New Collection",
"new": "New Collection",
- "save_as": "Save as",
"renamed": "Collection renamed",
+ "save_as": "Save as",
"select": "Select a Collection",
"select_location": "Select location",
"select_team": "Select a team",
@@ -253,30 +253,30 @@
"star": "Remove star"
},
"request": {
+ "added": "Request added",
"authorization": "Authorization",
"body": "Request Body",
"choose_language": "Choose language",
"content_type": "Content Type",
- "invalid_name": "Please provide a name for the request",
"copy_link": "Copy link",
"duration": "Duration",
- "added": "Request added",
"enter_curl": "Enter cURL",
- "renamed": "Request renamed",
"generate_code": "Generate code",
"generated_code": "Generated code",
"header_list": "Header List",
+ "invalid_name": "Please provide a name for the request",
"method": "Method",
"name": "Request name",
"parameter_list": "Query Parameters",
"parameters": "Parameters",
- "saved": "Request saved",
"payload": "Payload",
"query": "Query",
"raw_body": "Raw Request Body",
+ "renamed": "Request renamed",
"run": "Run",
"save": "Save",
"save_as": "Save as",
+ "saved": "Request saved",
"share": "Share",
"title": "Request",
"type": "Request type",