**This component is for post evidence against corruption. ** Variables are defined as `accountId` - extracts user's account ID from a context object, `fileAccept` - which file extensions are accepted, `fileIcon` - file icon class and `buttonText` - file button upload text: ``` const accountId = context.accountId; const fileAccept = props.fileAccept || "*"; const fileIcon = props.fileIcon || "bi-file"; const buttonText = props.buttonText || "Upload a file"; ``` This statement checks if the user is logged in or not, and returns a string accordingly. It expects users to log in with their NEAR wallet before they can add a new blog entry: ``` if (!accountId) { return "Please sign in with NEAR wallet to add a new blog entry"; } ``` State Initialization: ``` initState({ title: "", context: "", uploading: false, cid: null, filename: null, fileURL: null, observationError: null, titleError: null, }); ``` Constant `timestamp` records the current time in millisecond unix epoch format. The `applicationId` holds the name of this application: ``` const timestamp = Date.now(); // Get current time const applicationId = "IntegrityVault"; // Set the application name ``` This is a helper function that generates a URL where user uploaded files will be stored: ``` const ipfsUrl = (cid) => `https://ipfs.near.social/ipfs/${cid}`; // Function to create a url ``` `entry` is a object that holds data about the Corruption proof. This information assist in creating a unique reference to the user uploaded data: ``` const entry = { id: timestamp, applicationName: applicationId, data: { title: state.title, context: state.context, cid: state.cid, fileURL: state.fileURL, }, }; ``` Returning the JSX syntax is used to render the user interface. ``` return ( <Container> // JSX details </Container> ); ```