Many minor fixes

This commit is contained in:
Frikky
2025-10-22 00:37:56 +02:00
parent d26b7779e1
commit b559fb4a72
8 changed files with 21 additions and 120 deletions
+3 -1
View File
@@ -4,7 +4,9 @@ go 1.24.0
toolchain go1.24.3
//replace github.com/shuffle/opensearch-go => ../../../opensearch-go
//replace github.com/shuffle/shuffle-shared => ../../../shuffle-shared
//replace github.com/frikky/schemaless => ../../../schemaless
//replace github.com/frikky/kin-openapi => ../../../../git/kin-openapi
@@ -24,7 +26,7 @@ require (
github.com/gorilla/mux v1.8.1
github.com/h2non/filetype v1.1.3
github.com/satori/go.uuid v1.2.0
github.com/shuffle/shuffle-shared v0.9.32
github.com/shuffle/shuffle-shared v0.9.33
github.com/shuffle/singul v0.0.17
golang.org/x/crypto v0.40.0
google.golang.org/api v0.236.0
+2 -2
View File
@@ -363,8 +363,8 @@ github.com/sendgrid/sendgrid-go v3.16.1+incompatible h1:zWhTmB0Y8XCDzeWIm2/BIt1G
github.com/sendgrid/sendgrid-go v3.16.1+incompatible/go.mod h1:QRQt+LX/NmgVEvmdRw0VT/QgUn499+iza2FnDca9fg8=
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
github.com/shuffle/shuffle-shared v0.9.32 h1:hsF2YkKHgaNpqhh2oZs31BgPSjN+YjGNnd9WmD0qh3w=
github.com/shuffle/shuffle-shared v0.9.32/go.mod h1:vfI2QDGphZGrcwuUPQ1yI/Hgc8aseFro5+2k36irfkQ=
github.com/shuffle/shuffle-shared v0.9.33 h1:Fig5lJhRAmBtwI8C8KIf2OGNAWJAtdi/2XtK1qg1U/o=
github.com/shuffle/shuffle-shared v0.9.33/go.mod h1:WbLPLyBrh86ieRBgDyjC43M2qBF8a7E8jO8Pv7t8SOk=
github.com/shuffle/singul v0.0.17 h1:mxaPtj6z85Nf6tl7L2gwDliTfEZtRQqApuu9iKcP75o=
github.com/shuffle/singul v0.0.17/go.mod h1:8c42n1NahhCIPxzLxwp9eYbWkvY4+ct0jfbhkRsRRsY=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
+3 -101
View File
@@ -249,7 +249,7 @@ func handleGetWorkflowqueueConfirm(resp http.ResponseWriter, request *http.Reque
resp.Write([]byte(`{"success": true}`))
}
// FIXME: Authenticate this one? Can org ID be auth enough?
// FIXME: Authenticate this one. Can org ID be auth enough?
// (especially since we have a default: shuffle)
func handleGetWorkflowqueue(resp http.ResponseWriter, request *http.Request) {
cors := shuffle.HandleCors(resp, request)
@@ -325,7 +325,7 @@ func handleGetWorkflowqueue(resp http.ResponseWriter, request *http.Request) {
orgId = env.OrgId
}
executionRequests, err := shuffle.GetWorkflowQueue(ctx, environment, 100)
executionRequests, err := shuffle.GetWorkflowQueue(ctx, environment, 100, *env)
if err != nil {
resp.WriteHeader(500)
resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "%s"}`, err)))
@@ -336,106 +336,8 @@ func handleGetWorkflowqueue(resp http.ResponseWriter, request *http.Request) {
if len(executionRequests.Data) == 0 {
executionRequests.Data = []shuffle.ExecutionRequest{}
} else {
// Try again? I don't think this is necessary, and shouldn't really ever occur.
/*
if len(env.Id) == 0 && len(env.Name) == 0 {
timeNow := int64(time.Now().Unix())
foundId := ""
for _, requestData := range executionRequests.Data {
execution, err := shuffle.GetWorkflowExecution(ctx, requestData.ExecutionId)
if err == nil {
if len(execution.ExecutionOrg) > 0 {
foundId = execution.ExecutionOrg
break
}
}
}
if len(environment) > 0 {
env, err := shuffle.GetEnvironment(ctx, environment, foundId)
if err != nil {
log.Printf("[WARNING] No env found matching %s - continuing without updating orborus anyway: %s", environment, err)
//resp.WriteHeader(401)
//resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "No env found matching %s"}`, id)))
//return
} else {
if timeNow > env.Edited+60 {
env.RunningIp = request.RemoteAddr
env.Checkin = timeNow
err = shuffle.SetEnvironment(ctx, env)
if err != nil {
log.Printf("[WARNING] Failed updating environment: %s", err)
}
}
}
}
}
*/
orgId := env.OrgId
org, err := shuffle.GetOrg(ctx, orgId)
if err != nil {
log.Printf("[WARNING] Failed getting org %s for queue: %s", orgId, err)
}
parentOrg := org
if len(org.CreatorOrg) > 0 {
parentOrg, err = shuffle.GetOrg(ctx, org.CreatorOrg)
if err != nil {
log.Printf("[WARNING] Failed getting parent org %s for queue: %s", org.CreatorOrg, err)
}
}
licenseOrg := shuffle.HandleCheckLicense(ctx, *parentOrg)
stats, err := shuffle.GetOrgStatistics(ctx, parentOrg.Id)
if err != nil {
log.Printf("[WARNING] Failed getting statistics for org %s: %s", parentOrg.Id, err)
}
limit := licenseOrg.SyncFeatures.WorkflowExecutions.Limit
totalWorkflowExecutions := stats.MonthlyWorkflowExecutions + stats.MonthlyChildWorkflowExecutions
if totalWorkflowExecutions > limit {
cacheKey := fmt.Sprintf("org-%s-last-queue-send", orgId)
currentTime := time.Now().Unix()
lastSendCache, err := shuffle.GetCache(ctx, cacheKey)
if err == nil {
var lastSendTime int64
if timeBytes, ok := lastSendCache.([]byte); ok {
if unmarshallErr := json.Unmarshal(timeBytes, &lastSendTime); unmarshallErr == nil {
timeSinceLastSend := currentTime - lastSendTime
if timeSinceLastSend < 60 {
log.Printf("[INFO] Rate limiting: Org %s exceeded the 10K usage quota for non-licensed users (current queued: %d, current month usage: %d). To increase scale, upgrade to an Enterprise license.", orgId, len(executionRequests.Data), totalWorkflowExecutions)
executionRequests.Data = []shuffle.ExecutionRequest{}
} else {
if len(executionRequests.Data) > 1 {
log.Printf("[INFO] Rate limiting: Org %s exceeded the 10K usage quota for non-licensed users (current queued: %d, current month usage: %d). To increase scale, upgrade to an Enterprise license.", orgId, len(executionRequests.Data), totalWorkflowExecutions)
executionRequests.Data = executionRequests.Data[0:1]
}
timeBytes, _ := json.Marshal(currentTime)
if cacheErr := shuffle.SetCache(ctx, cacheKey, timeBytes, 1); cacheErr != nil {
log.Printf("[WARNING] Failed to set rate limiting cache for org %s: %s", orgId, cacheErr)
}
}
}
}
} else {
if len(executionRequests.Data) > 1 {
log.Printf("[INFO] Rate limiting: Org %s exceeded the 10K usage quota for non-licensed users (current queued: %d, current month usage: %d). To increase scale, upgrade to an Enterprise license.", orgId, len(executionRequests.Data), totalWorkflowExecutions)
executionRequests.Data = executionRequests.Data[0:1]
}
timeBytes, _ := json.Marshal(currentTime)
if cacheErr := shuffle.SetCache(ctx, cacheKey, timeBytes, 1); cacheErr != nil {
log.Printf("[WARNING] Failed to set initial rate limiting cache for org %s: %s", orgId, cacheErr)
}
}
} else if len(executionRequests.Data) > 50 {
if len(executionRequests.Data) > 50 {
executionRequests.Data = executionRequests.Data[0:49]
}
-2
View File
@@ -589,8 +589,6 @@ const AppStats = (defaultprops) => {
const handleEndTimeChange = (date) => {
setEndTime(date)
}
console.log("sync stats: ", syncStats, statistics)
const paperStyle = {
textAlign: "center",
+1 -1
View File
@@ -471,7 +471,7 @@ const EditWorkflow = (props) => {
submitLoading === true ||
(uploadedImage === null && innerWorkflow?.default_return_value?.trim()?.length === 0)
}
variant="aiButton"
variant="aiButtonGhost"
onClick={async () => {
// Track AI Generate button click
if (isCloud) {
+6 -5
View File
@@ -249,7 +249,7 @@ const LeftSideBar = ({ userdata, serverside, globalUrl, notifications, }) => {
const UpdateTabStatus = useCallback(() => {
const lastTabOpenByUser = localStorage.getItem("lastTabOpenByUser");
if ((lastTabOpenByUser === "automate" && currentPath.includes("/dashboards/automate")) || currentPath.includes("/dashboards/automate")) {
if ((lastTabOpenByUser === "automate" && currentPath.includes("/new-dashboard")) || currentPath.includes("/new-dashboard")) {
setOpenautomateTab(true);
setCurrentOpenTab("automate");
setOpenSecurityTab(false);
@@ -1230,19 +1230,19 @@ const LeftSideBar = ({ userdata, serverside, globalUrl, notifications, }) => {
onClick={(event) => {
setOpenautomateTab(true);
setOpenSecurityTab(false);
setCurrentOpenTab("usecases");
localStorage.setItem("lastTabOpenByUser", "usecases");
setCurrentOpenTab("new-dashboard");
localStorage.setItem("lastTabOpenByUser", "new-dashboard");
}}
variant="text"
style={{
...ButtonStyle,
backgroundColor: ((currentOpenTab === "automate") || (!expandLeftNav && (currentPath === "/workflows" || currentPath === "/usecases" || currentPath.includes("/search"))))? themeMode === "dark" ? darkHoverColor : lightHoverColor : "transparent",
backgroundColor: ((currentOpenTab === "new-dashboard") || (!expandLeftNav && (currentPath === "/workflows" || currentPath === "/usecases" || currentPath.includes("/search"))))? themeMode === "dark" ? darkHoverColor : lightHoverColor : "transparent",
}}
onMouseOver={(event)=>{
event.currentTarget.style.backgroundColor = themeMode === "dark" ? darkHoverColor : lightHoverColor;
}}
onMouseOut={(event)=>{
event.currentTarget.style.backgroundColor = ((currentOpenTab === "automate")|| (!expandLeftNav && (currentPath === "/workflows" || currentPath === "/usecases" || currentPath.includes("/search"))))? themeMode === "dark" ? darkHoverColor : lightHoverColor : "transparent";
event.currentTarget.style.backgroundColor = ((currentOpenTab === "new-dashboard")|| (!expandLeftNav && (currentPath === "/workflows" || currentPath === "/usecases" || currentPath.includes("/search"))))? themeMode === "dark" ? darkHoverColor : lightHoverColor : "transparent";
}}
>
<svg
@@ -1932,6 +1932,7 @@ const LeftSideBar = ({ userdata, serverside, globalUrl, notifications, }) => {
variant="outlined"
style={{marginBottom: 15, borderWidth: 2, }}
onClick={() => {
navigate("/admin?admin_tab=billingstats&ref=left_sidebar_upgrade")
if (isCloud) {
window.open("https://shuffler.io/contact?category=book_a_demo&ref=cloud", "_blank")
} else {
+6 -6
View File
@@ -61,17 +61,17 @@ const OrganizationTab = (props) => {
useEffect(() => {
if (isIntegrationPartner && isChildOrg && !isGlobalUser) {
setVisibleTabs(items.filter((item) => item !== 'Branding' && item !== 'SSO'));
}else {
} else {
if (userdata && userdata.active_org && userdata.active_org.role === 'admin') {
setVisibleTabs(items);
}else {
} else {
setVisibleTabs(items.filter((item) => item !== 'SSO'));
}
}
if (isCloud) {
setVisibleTabs(items.filter((item) => item !== 'Production Status'));
}
//if (isCloud) {
// setVisibleTabs(items.filter((item) => item !== 'Production Status'));
//}
},[isIntegrationPartner, isChildOrg, isGlobalUser, userdata, isCloud]);
useEffect(() => {
@@ -202,7 +202,7 @@ const OrganizationTab = (props) => {
key={index}
title={
((tabName === "sso")) && !(userdata?.support || userdata?.active_org?.role === "admin")
? "Your role is not admin. Please ask the admin to change your role."
? "Your role is not admin. Please ask an admin to change your role."
: ""
}
placement="right"
-2
View File
@@ -46,8 +46,6 @@ const Priority = (props) => {
if (item !== null) {
descsplit[1] = item.large_image
console.log("DESCSPLIT name: ", descsplit[0])
if (descsplit[0].includes(":default")) {
realignedSrc = true
}