From e7bfd35b9a82959bb41ba1450c108bab5ae0c874 Mon Sep 17 00:00:00 2001
From: Matiss Janis Aboltins <matiss@mja.lv>
Date: Sat, 18 Mar 2023 20:48:37 +0000
Subject: [PATCH] :sparkles: (autocomplete) enable new version for dev/preview
 deploys (#789)

Enabling the new autocomplete for dev/preview deployments.

This will allow us to spot any more issues there might be before we
release the new autocomplete.

https://github.com/actualbudget/actual/issues/773
---
 .../src/components/schedules/EditSchedule.js               | 2 ++
 packages/desktop-client/src/hooks/useFeatureFlag.js        | 7 ++++++-
 packages/loot-design/src/components/NewAutocomplete.js     | 2 +-
 .../loot-design/src/components/NewPayeeAutocomplete.js     | 6 +++---
 upcoming-release-notes/789.md                              | 6 ++++++
 5 files changed, 18 insertions(+), 5 deletions(-)
 create mode 100644 upcoming-release-notes/789.md

diff --git a/packages/desktop-client/src/components/schedules/EditSchedule.js b/packages/desktop-client/src/components/schedules/EditSchedule.js
index 90d7ebbdc..8b4d42782 100644
--- a/packages/desktop-client/src/components/schedules/EditSchedule.js
+++ b/packages/desktop-client/src/components/schedules/EditSchedule.js
@@ -442,6 +442,7 @@ export default function ScheduleDetails() {
           <FormLabel title="Payee" htmlFor="payee-field" />
           <PayeeAutocomplete
             value={state.fields.payee}
+            inputId="payee-field"
             inputProps={{ id: 'payee-field', placeholder: '(none)' }}
             onSelect={id =>
               dispatch({ type: 'set-field', field: 'payee', value: id })
@@ -455,6 +456,7 @@ export default function ScheduleDetails() {
           <AccountAutocomplete
             includeClosedAccounts={false}
             value={state.fields.account}
+            inputId="account-field"
             inputProps={{ id: 'account-field', placeholder: '(none)' }}
             onSelect={id =>
               dispatch({ type: 'set-field', field: 'account', value: id })
diff --git a/packages/desktop-client/src/hooks/useFeatureFlag.js b/packages/desktop-client/src/hooks/useFeatureFlag.js
index 6cda94e42..27920fe18 100644
--- a/packages/desktop-client/src/hooks/useFeatureFlag.js
+++ b/packages/desktop-client/src/hooks/useFeatureFlag.js
@@ -1,7 +1,12 @@
 import { useSelector } from 'react-redux';
 
+import {
+  isDevelopmentEnvironment,
+  isPreviewEnvironment,
+} from 'loot-design/src/util/environment';
+
 const DEFAULT_FEATURE_FLAG_STATE = {
-  newAutocomplete: false,
+  newAutocomplete: isDevelopmentEnvironment() || isPreviewEnvironment(),
   syncAccount: false,
   goalTemplatesEnabled: false,
 };
diff --git a/packages/loot-design/src/components/NewAutocomplete.js b/packages/loot-design/src/components/NewAutocomplete.js
index dc2bf91f6..263160c79 100644
--- a/packages/loot-design/src/components/NewAutocomplete.js
+++ b/packages/loot-design/src/components/NewAutocomplete.js
@@ -40,7 +40,7 @@ const Autocomplete = React.forwardRef(
 
       // Create a new option
       if (selected.__isNew__) {
-        onCreateOption(selected);
+        onCreateOption(selected.value);
         return;
       }
 
diff --git a/packages/loot-design/src/components/NewPayeeAutocomplete.js b/packages/loot-design/src/components/NewPayeeAutocomplete.js
index c6310f60f..389f992a5 100644
--- a/packages/loot-design/src/components/NewPayeeAutocomplete.js
+++ b/packages/loot-design/src/components/NewPayeeAutocomplete.js
@@ -93,9 +93,9 @@ export default function PayeeAutocomplete({
       inputValue={inputValue}
       onInputChange={setInputValue}
       onSelect={onSelect}
-      onCreateOption={async selected => {
+      onCreateOption={async selectedValue => {
         const existingOption = allOptions.find(option =>
-          option.label.toLowerCase().includes(selected.label?.toLowerCase()),
+          option.label.toLowerCase().includes(selectedValue?.toLowerCase()),
         );
 
         // Prevent creating duplicates
@@ -105,7 +105,7 @@ export default function PayeeAutocomplete({
         }
 
         // This is actually a new option, so create it
-        onSelect(await dispatch(createPayee(selected.value)));
+        onSelect(await dispatch(createPayee(selectedValue)));
       }}
       isCreatable={useCreatableComponent}
       createOptionPosition="first"
diff --git a/upcoming-release-notes/789.md b/upcoming-release-notes/789.md
new file mode 100644
index 000000000..447b15ca0
--- /dev/null
+++ b/upcoming-release-notes/789.md
@@ -0,0 +1,6 @@
+---
+category: Maintenance
+authors: [MatissJanis]
+---
+
+Enable new autocomplete in dev/preview builds
-- 
GitLab