// Metro module 1205 (f1206). import _classCallCheck from "./_classCallCheck"; import _createClass from "./_createClass"; import _possibleConstructorReturn from "./_possibleConstructorReturn"; import _getPrototypeOf from "./_getPrototypeOf"; import _inherits from "./_inherits"; import { Component } from "react"; import { Appearance, Keyboard, View, Text, Image, TextInput, TouchableWithoutFeedback, TouchableOpacity } from "react-native"; import { isValidEmail, feedbackAlertDialog, base64ToUint8Array } from "./Module1196"; import { debug, lastEventId, captureFeedback, getCurrentScope, getIsolationScope, getGlobalScope } from "./Module817"; import * as _Module1002 from "./Module1002"; import { isExpoGo, notWeb } from "./Module1002"; import { getDataFromUri, NATIVE } from "./Module1001"; import { defaultConfiguration } from "./Module1201"; import { lazyLoadFeedbackIntegration } from "./Module1198"; import { getTheme } from "./Module1199"; import _default from "./_default_1202"; import { getCapturedScreenshot } from "./takeScreenshot"; import { sentryLogo } from "./Module1206"; import { hideFeedbackButton, showScreenshotButton } from "./NOOP_SET_VISIBILITY"; function $mk117658($env) { return function(a0) { a0($env[0]); }; } function $mk118656($env) { return (a0) => { const r4 = $env; if (a0 != null) { r4[13].setState({ filename: r4[12], attachment: a0, attachmentUri: r4[0] }); } else { r4[13]._showImageRetrievalDevelopmentNote(); debug.error("Failed to read image data from uri:", r4[0]); } }; } function $mk118657($env) { return (a0) => { const r1 = $env; r1[13]._showImageRetrievalDevelopmentNote(); debug.error("Failed to read image data from uri:", r1[0], "error: ", a0); }; } let c1014_16; let env1014 = {}; env1014[15] = function _isNativeReflectConstruct() { let c12910_0; try { c12910_0 = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); } catch ($e) {} const _isNativeReflectConstruct2 = function _isNativeReflectConstruct() { return !!c12910_0; }; env1014[15] = _isNativeReflectConstruct2; return _isNativeReflectConstruct2(); }; c1014_16 = (this ? this.__awaiter : this) || function(c12911_0, c12911_1, a2, c12911_3) { let r2 = a2; let Promise2 = a2; if (!a2) { Promise2 = Promise; r2 = Promise2; } return new r2(function(a0, c24315_1) { let rejected2, step2; let c24315_0 = a0; const fulfilled2 = function fulfilled(a0) { try { step2(c12911_3.next(a0)); } catch ($e) { c24315_1($e); } }; rejected2 = function rejected(a0) { try { step2(c12911_3.throw(a0)); } catch ($e) { c24315_1($e); } }; step2 = function step(a0) { if (a0.done) { c24315_0(a0.value); } else { let env28860; let value = a0.value; const r10 = env28860 = {}; env28860[0] = value; if (!(value instanceof Promise2)) { value = new Promise2($mk117658(r10)); } value.then(fulfilled2, rejected2); } }; const r16 = c12911_3.apply(c12911_0, c12911_1 || []); c12911_3 = r16; const r18 = r16.next(); const { done, value } = r18; if (done) { a0(value); } else { let env24316; const r21 = env24316 = {}; env24316[0] = value; (value instanceof Promise2 ? value : new Promise2($mk117658(r21))).then(fulfilled2, rejected2); } }); }; const FeedbackWidget = function FeedbackWidget(a0) { _classCallCheck(this, FeedbackWidget); const r12 = [a0]; const r11 = _getPrototypeOf(FeedbackWidget); const r18 = (0, env1014[15])() ? Reflect.construct(r11, r12, _getPrototypeOf(this).constructor) : r11.apply(this, r12); const _this = _possibleConstructorReturn(this, r18); _this._didSubmitForm = false; _this.handleFeedbackSubmit = () => { const state = _this.state; const { name, email, description } = state; const props3 = _this.props; const { onSubmitSuccess, onSubmitError, onFormSubmitted } = props3; const props2 = _this.props; const name2 = name == null ? void 0 : name.trim(); const email2 = email == null ? void 0 : email.trim(); const message = description == null ? void 0 : description.trim(); L27: { if (!(_this.props.isNameRequired && !name2) && !(_this.props.isEmailRequired && !email2) && message) { L17: { if (_this.props.shouldValidateEmail) { if (!_this.props.isEmailRequired && !(email2.length > 0)) { break L17; } if (!isValidEmail(email2)) { feedbackAlertDialog(props2.errorTitle, props2.emailError); break L27; } } } const attachments = _this.state.filename ? _this.state.attachment ? [{ filename: _this.state.filename, data: _this.state.attachment }] : void 0 : void 0; const r14 = { message, name: name2, email: email2, associatedEventId: lastEventId() }; try { if (!onFormSubmitted) { _this.setState({ isVisible: false }); } captureFeedback(r14, attachments ? { attachments } : void 0); onSubmitSuccess({ name: name2, email: email2, message, attachments }); feedbackAlertDialog(props2.successMessageText, ""); onFormSubmitted(); _this._didSubmitForm = true; break L27; } catch (r101) { onSubmitError(new Error(`Feedback form submission failed: ${r101}`)); feedbackAlertDialog(props2.errorTitle, props2.genericError); debug.error(`Feedback form submission failed: ${r101}`); break L27; } } feedbackAlertDialog(props2.errorTitle, props2.formError); } }; _this.onScreenshotButtonPress = async () => { let c31226_1, c31226_2, _this4; const _this3 = this; L12: { L50: { L20: { let env31887; _this4 = _this3; c31226_2 = void 0; const r13 = env31887 = { $parent: env1014 }; c31226_1 = r13; env31887[13] = _this3; env31887[1] = void 0; env31887[2] = void 0; env31887[3] = void 0; env31887[4] = void 0; env31887[5] = void 0; env31887[6] = void 0; env31887[7] = void 0; env31887[8] = void 0; env31887[9] = void 0; env31887[10] = void 0; env31887[11] = void 0; env31887[12] = void 0; env31887[0] = void 0; if (_this3._hasScreenshot()) { _this3.setState({ filename: void 0, attachment: void 0, attachmentUri: void 0 }); break L12; } const imagePicker = _this3.props.imagePicker; env31887[6] = imagePicker; if (imagePicker) { const r51 = imagePicker.launchImageLibraryAsync ? () => { const r6 = env31887[6]; const launchImageLibraryAsync = r6.launchImageLibraryAsync; return launchImageLibraryAsync !== null ? launchImageLibraryAsync !== void 0 ? launchImageLibraryAsync.call(r6, { mediaTypes: ["images"], base64: _Module1002.isWeb() }) : void 0 : void 0; } : imagePicker.launchImageLibrary ? () => { const r6 = env31887[6]; const launchImageLibrary = r6.launchImageLibrary; return launchImageLibrary !== null ? launchImageLibrary !== void 0 ? launchImageLibrary.call(r6, { mediaType: "photo", includeBase64: _Module1002.isWeb() }) : void 0 : void 0; } : null; if (r51) { env31887[7] = await r51(); if (!(env31887[7] == null ? void 0 : env31887[7].assets)) { break L50; } if (!(env31887[7].assets.length > 0)) { break L50; } const isWeb = _Module1002.isWeb(); const r101 = env31887[7].assets[0]; if (isWeb) { env31887[1] = r101; env31887[8] = r101 !== null ? env31887[1] !== void 0 ? env31887[1].fileName : void 0 : void 0; const r135 = env31887[7].assets[0]; env31887[2] = r135; env31887[9] = r135 !== null ? env31887[2] !== void 0 ? env31887[2].uri : void 0 : void 0; const r143 = env31887[7].assets[0]; env31887[3] = r143; env31887[10] = r143 !== null ? env31887[3] !== void 0 ? env31887[3].base64 : void 0 : void 0; env31887[11] = env31887[10] ? base64ToUint8Array(env31887[10]) : void 0; if (env31887[11]) { _this4.setState({ filename: env31887[8], attachment: env31887[11], attachmentUri: env31887[9] }); break L50; } debug.error("Failed to read image data on the web"); break L50; } env31887[4] = r101; env31887[12] = r101 !== null ? env31887[4] !== void 0 ? env31887[4].fileName : void 0 : void 0; const r107 = env31887[7].assets[0]; env31887[5] = r107; const r108 = r107 !== null ? env31887[5] !== void 0 ? env31887[5].uri : void 0 : void 0; const r112 = c31226_1; env31887[0] = r108; if (!env31887[0]) { break L50; } getDataFromUri(env31887[0]).then($mk118656(r112)).catch($mk118657(r112)); break L50; } debug.warn("No compatible image picker library found. Please provide a valid image picker library."); break L20; } (0, ({ ...defaultConfiguration, ..._this3.props }).onAddScreenshot)((a0) => { const attachmentUri = a0; getDataFromUri(a0).then((result) => { if (result != null) { env31887[13].setState({ filename: "feedback_screenshot", attachment: result, attachmentUri }); } else { env31887[13]._showImageRetrievalDevelopmentNote(); debug.error("Failed to read image data from uri:", attachmentUri); } }).catch((error) => { env31887[13]._showImageRetrievalDevelopmentNote(); debug.error("Failed to read image data from uri:", attachmentUri, "error: ", error); }); }); break L12; } return void 0; } return void 0; } }; _this._setCapturedScreenshot = (a0) => { if (a0.data != null) { debug.log("Setting captured screenshot:", a0.filename); NATIVE.encodeToBase64(a0.data).then((result) => { if (result != null) { _this.setState({ filename: a0.filename, attachment: a0.data, attachmentUri: `data:${a0.contentType};base64,${result}` }); } else { debug.error("Failed to read image data from:", a0.filename); } }).catch((error) => { debug.error("Failed to read image data from:", a0.filename, "error: ", error); }); } else { debug.error("Failed to read image data from:", a0.filename); } }; _this._saveFormState = () => { FeedbackWidget._savedState = { ..._this.state }; }; _this._clearFormState = () => { FeedbackWidget._savedState = { name: "", email: "", description: "", filename: void 0, attachment: void 0, attachmentUri: void 0 }; }; _this._hasScreenshot = () => _this.state.filename !== void 0 && _this.state.attachment !== void 0 && _this.state.attachmentUri !== void 0; _this._getUser = () => { const user = getCurrentScope().getUser(); if (user) { return user; } return getIsolationScope().getUser() || getGlobalScope().getUser(); }; _this._showImageRetrievalDevelopmentNote = () => { if (isExpoGo()) { feedbackAlertDialog("Development note", "The feedback widget cannot retrieve image data in Expo Go. Please build your app to test this functionality."); } }; const props2 = _this.props; const r34 = props2 !== null ? props2 !== void 0 ? props2.useSentryUser : void 0 : void 0; let r35 = r34 !== null ? r34 !== void 0 ? r34.email : void 0 : void 0; if (!r35) { const r37 = _this._getUser(); r35 = r37 !== null ? r37 !== void 0 ? r37.email : void 0 : void 0; } if (!r35) { r35 = ""; } const props3 = _this.props; const r40 = props3 !== null ? props3 !== void 0 ? props3.useSentryUser : void 0 : void 0; let r41 = r40 !== null ? r40 !== void 0 ? r40.name : void 0 : void 0; if (!r41) { const r43 = _this._getUser(); r41 = r43 !== null ? r43 !== void 0 ? r43.name : void 0 : void 0; } if (!r41) { r41 = ""; } _this.state = { isVisible: true, name: FeedbackWidget._savedState.name || r41, email: FeedbackWidget._savedState.email || r35, description: FeedbackWidget._savedState.description || "", filename: FeedbackWidget._savedState.filename || void 0, attachment: FeedbackWidget._savedState.attachment || void 0, attachmentUri: FeedbackWidget._savedState.attachmentUri || void 0 }; lazyLoadFeedbackIntegration(); return _this; }; _inherits(FeedbackWidget, Component); const r52 = _createClass(FeedbackWidget, [{ key: "componentDidMount", value: function componentDidMount() { this._themeListener = Appearance.addChangeListener(() => { this.forceUpdate(); }); } }, { key: "componentWillUnmount", value: function componentWillUnmount() { if (this._didSubmitForm) { this._clearFormState(); this._didSubmitForm = false; } else { this._saveFormState(); } if (this._themeListener) { this._themeListener.remove(); } } }, { key: "render", value: function render() { const _this2 = this; const theme = getTheme(); const state = this.state; const { name, email, description } = state; const onFormClose = this.props.onFormClose; const props2 = this.props; const props3 = this.props; const props = this.props; const r25 = { ..._default(theme), ...this.props.styles }; const onCancel2 = () => { if (onFormClose) { onFormClose(); } else { _this2.setState({ isVisible: false }); } }; if (this.state.isVisible) { const capturedScreenshot = getCapturedScreenshot(); if (capturedScreenshot === "ErrorCapturingScreenshot") { setTimeout(async () => { feedbackAlertDialog(props.errorTitle, props.captureScreenshotError); }, 100); } else if (capturedScreenshot) { this._setCapturedScreenshot(capturedScreenshot); } const props5 = { onPress: notWeb() ? Keyboard.dismiss : void 0, accessible: false, accessibilityElementsHidden: false }; const props4 = { style: r25.container }; const r94 = {props.formTitle} {props2.showBranding && } ; const r95 = props2.showName && <> {props.nameLabel} {props2.isNameRequired && ` ${props.isRequiredLabel}`} _this2.setState({ name: text })} /> ; const r121 = props2.showEmail && <> {props.emailLabel} {props2.isEmailRequired && ` ${props.isRequiredLabel}`} _this2.setState({ email: text })} /> ; const r161 = {props.messageLabel} {` ${props.isRequiredLabel}`} ; return {r94} {r95} {r121} {r161} _this2.setState({ description: text })} multiline /> {(props2.enableScreenshot || props3.imagePicker || this._hasScreenshot()) && {this.state.attachmentUri && } {this._hasScreenshot() ? props.removeScreenshotButtonLabel : props.addScreenshotButtonLabel} } {notWeb() && props2.enableTakeScreenshot && !this.state.attachmentUri && { hideFeedbackButton(); if (onFormClose) { onFormClose(); } else { _this2.setState({ isVisible: false }); } showScreenshotButton(); }}> {props.captureScreenshotButtonLabel} } {props.submitButtonLabel} {props.cancelButtonLabel} ; } return null; } }], [{ key: "reset", value: function reset() { FeedbackWidget._savedState = { name: "", email: "", description: "", filename: void 0, attachment: void 0, attachmentUri: void 0 }; } }]); r52.defaultProps = defaultConfiguration; r52._savedState = { name: "", email: "", description: "", filename: void 0, attachment: void 0, attachmentUri: void 0 }; export { r52 as FeedbackWidget };