diff --git a/lib/rclone/overrides.ts b/lib/rclone/overrides.ts
index 274ddb1..e13f5e6 100644
--- a/lib/rclone/overrides.ts
+++ b/lib/rclone/overrides.ts
@@ -1,3 +1,5 @@
+export const OWN_OAUTH_TYPES = ['drive', 'google photos']
+
export const OVERRIDES = {
alias: {
Description: 'ALIAS',
diff --git a/src/components/RemoteCreateDrawer.tsx b/src/components/RemoteCreateDrawer.tsx
index 9e0cf63..59782e1 100644
--- a/src/components/RemoteCreateDrawer.tsx
+++ b/src/components/RemoteCreateDrawer.tsx
@@ -6,7 +6,7 @@ import { platform } from '@tauri-apps/plugin-os'
import { ChevronDown, ChevronUp, RefreshCcwIcon } from 'lucide-react'
import { type Key, startTransition, useCallback, useMemo, useState } from 'react'
import rclone from '../../lib/rclone/client'
-import { OVERRIDES } from '../../lib/rclone/overrides'
+import { OVERRIDES, OWN_OAUTH_TYPES } from '../../lib/rclone/overrides'
import type { BackendOption } from '../../types/rclone'
import RemoteField from './RemoteField'
@@ -67,6 +67,16 @@ export default function RemoteCreateDrawer({
[currentBackend, config.provider, config.type]
)
+ // Google Drive / Google Photos require the user's own OAuth credentials (rclone is retiring its
+ // shared client-id). Block creation until they're supplied.
+ const missingCredentials = useMemo(
+ () =>
+ OWN_OAUTH_TYPES.includes(config.type)
+ ? ['client_id', 'client_secret'].filter((f) => !(config[f] || '').trim())
+ : [],
+ [config]
+ )
+
const createRemoteMutation = useMutation({
mutationFn: async ({
name,
@@ -269,6 +279,7 @@ export default function RemoteCreateDrawer({
)
}
- isRequired={option.Required}
+ isRequired={option.Required || requiresOwnCredentials}
defaultValue={initialFieldValue}
autoComplete="off"
autoCapitalize="off"
autoCorrect="off"
spellCheck="false"
- description={helpDescription}
+ description={requiresOwnCredentials ? undefined : helpDescription}
isDisabled={isDisabled}
/>
)