## Description Updating analytics to pass the correct source information Fixes [#32266](https://github.com/appsmithorg/appsmith/issues/32266) ## Automation /ok-to-test tags="@tag.Sanity" ### 🔍 Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!TIP] > 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉 > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/8750877755> > Commit: 6fedefebd3867aee79877b7ed105c90888005cfd > Cypress dashboard url: <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8750877755&attempt=1" target="_blank">Click here!</a> <!-- end of auto-generated comment: Cypress test results -->
66 lines
1.6 KiB
TypeScript
66 lines
1.6 KiB
TypeScript
import React, { Component } from "react";
|
|
import styled from "styled-components";
|
|
import AppCrashImage from "assets/images/404-image.png";
|
|
import * as Sentry from "@sentry/react";
|
|
import log from "loglevel";
|
|
import AnalyticsUtil from "@appsmith/utils/AnalyticsUtil";
|
|
import { Button } from "design-system";
|
|
|
|
const Wrapper = styled.div`
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
text-align: center;
|
|
height: calc(100vh - ${(props) => props.theme.headerHeight});
|
|
.bold-text {
|
|
font-weight: ${(props) => props.theme.fontWeights[3]};
|
|
font-size: 24px;
|
|
}
|
|
.page-unavailable-img {
|
|
width: 35%;
|
|
}
|
|
.button-position {
|
|
margin: auto;
|
|
}
|
|
`;
|
|
|
|
class AppErrorBoundary extends Component {
|
|
state = {
|
|
hasError: false,
|
|
};
|
|
|
|
componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {
|
|
log.error({ error, errorInfo });
|
|
Sentry.captureException(error);
|
|
AnalyticsUtil.logEvent("APP_CRASH", { error, errorInfo });
|
|
this.setState({
|
|
hasError: true,
|
|
});
|
|
}
|
|
|
|
render() {
|
|
if (this.state.hasError) {
|
|
return (
|
|
<Wrapper>
|
|
<img alt="App crashed" src={AppCrashImage} />
|
|
<div>
|
|
<p className="bold-text">Oops! Something went wrong</p>
|
|
<p>
|
|
Please try again using the button below. <br />
|
|
If the issue persists, please contact us
|
|
</p>
|
|
<br />
|
|
<Button onClick={() => window.location.reload()} size="md">
|
|
Retry
|
|
</Button>
|
|
</div>
|
|
</Wrapper>
|
|
);
|
|
}
|
|
return this.props.children;
|
|
}
|
|
}
|
|
|
|
export default AppErrorBoundary;
|