PatchComponentRedo (#5136)

* PatchComponent update specifically for SettingsInterfacePanel
* Fix unrelated lint issues
---------
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
This commit is contained in:
Gykes
2024-08-19 21:25:06 -07:00
committed by GitHub
parent 49060e6686
commit 7788a6fd07
5 changed files with 878 additions and 870 deletions

View File

@@ -192,7 +192,7 @@ func (me *contentDirectoryService) Handle(action string, argsXML []byte, r *http
obj, err := me.objectFromID(browse.ObjectID) obj, err := me.objectFromID(browse.ObjectID)
if err != nil { if err != nil {
return nil, upnp.Errorf(upnpav.NoSuchObjectErrorCode, err.Error()) return nil, upnp.Errorf(upnpav.NoSuchObjectErrorCode, "cannot find object with id %q: %v", browse.ObjectID, err.Error())
} }
switch browse.BrowseFlag { switch browse.BrowseFlag {

View File

@@ -76,7 +76,7 @@ func (t *rawPluginTask) Start() error {
if err != nil { if err != nil {
logger.Warnf("error marshalling raw command input") logger.Warnf("error marshalling raw command input")
} }
if k, err := io.WriteString(stdin, string(inBytes)); err != nil { if k, err := stdin.Write(inBytes); err != nil {
logger.Warnf("error writing input to plugins stdin (wrote %v bytes out of %v): %v", k, len(string(inBytes)), err) logger.Warnf("error writing input to plugins stdin (wrote %v bytes out of %v): %v", k, len(string(inBytes)), err)
} }
}() }()

View File

@@ -1338,7 +1338,7 @@ func (c *Client) submitDraft(ctx context.Context, query string, input interface{
return fmt.Errorf("failed to decode data %s: %w", string(responseBytes), err) return fmt.Errorf("failed to decode data %s: %w", string(responseBytes), err)
} }
if respGQL.Errors != nil && len(respGQL.Errors) > 0 { if len(respGQL.Errors) > 0 {
// try to parse standard graphql error // try to parse standard graphql error
errors := &client.GqlErrorList{} errors := &client.GqlErrorList{}
if e := json.Unmarshal(responseBytes, errors); e != nil { if e := json.Unmarshal(responseBytes, errors); e != nil {

View File

@@ -1,5 +1,6 @@
import React from "react"; import React from "react";
import { BooleanSetting } from "../Inputs"; import { BooleanSetting } from "../Inputs";
import { PatchComponent } from "src/patch";
interface IItem { interface IItem {
id: string; id: string;
@@ -13,49 +14,47 @@ interface ICheckboxGroupProps {
onChange?: (ids: string[]) => void; onChange?: (ids: string[]) => void;
} }
export const CheckboxGroup: React.FC<ICheckboxGroupProps> = ({ export const CheckboxGroup: React.FC<ICheckboxGroupProps> = PatchComponent(
groupId, "CheckboxGroup",
items, ({ groupId, items, checkedIds = [], onChange }) => {
checkedIds = [], function generateId(itemId: string) {
onChange, return `${groupId}-${itemId}`;
}) => { }
function generateId(itemId: string) {
return `${groupId}-${itemId}`;
}
return ( return (
<> <>
{items.map(({ id, headingID }) => ( {items.map(({ id, headingID }) => (
<BooleanSetting <BooleanSetting
key={id} key={id}
id={generateId(id)} id={generateId(id)}
headingID={headingID} headingID={headingID}
checked={checkedIds.includes(id)} checked={checkedIds.includes(id)}
onChange={(v) => { onChange={(v) => {
if (v) { if (v) {
onChange?.( onChange?.(
items items
.map((item) => item.id) .map((item) => item.id)
.filter( .filter(
(itemId) => (itemId) =>
generateId(itemId) === generateId(id) || generateId(itemId) === generateId(id) ||
checkedIds.includes(itemId) checkedIds.includes(itemId)
) )
); );
} else { } else {
onChange?.( onChange?.(
items items
.map((item) => item.id) .map((item) => item.id)
.filter( .filter(
(itemId) => (itemId) =>
generateId(itemId) !== generateId(id) && generateId(itemId) !== generateId(id) &&
checkedIds.includes(itemId) checkedIds.includes(itemId)
) )
); );
} }
}} }}
/> />
))} ))}
</> </>
); );
}; }
);