1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00
Commit Graph

810 Commits

Author SHA1 Message Date
Dan J Miller
e9c7df28ed
Address book send plus contact list (#6914)
* Style Send Header

* Move Send to-row to send view and restyle

* Add "Recents" group to select recipient view

* Rename SendToRow to AddRecipient

* Basic UI and Layout

* New ENSInput component

* wip - fuzzy search for input

* small refactor

* Add Dialog

* contact list initial

* initial error on invalid address

* clean up edit

* Click to open modal

* Create AddToAddressBookModal component

* Modal styling and layout

* modal i18n

* Add to Addressbook

* ens wip

* ens wip

* ENS Resolution

* Reset input

* Send to explicit address

* Happy Path Complete

* Add back error checking

* Reset send-to when emptying input

* Add back warning object

* Fix linter

* Fix unit test #1 - fix import paths

* Remove dead tests

* One more to go

* Fix all unit tests

* add unit test for reducers and actions

* test rendering AddRecipient

* Add tests for dialog boxes in AddRecipient

* Add test for validating

* Fix linter

* Fix e2e tests

* Token send e2e fix

* Style View Contact

* Style edit-contact

* Fix e2e

* Fix from-import-beta-ui e2e spec

* Make section header say "add recipient” by default

* Auto-focus add recipient input

* Update placeholder text

* Update input title font size

* Auto advance to next step if user paste a valid address

* Ellipsify address when recipient is selected

* Fix app header background color on desktop

* Give each form row a margin of 16px

* Use .container/.component naming pattern for ens-input

* Auto-focus on input when add to addressbook modal is opened; Save on Enter

* Fix and add unit test

* Fix selectors name in e2e tests

* Correct e2e test token amount for address-book-send changes

* Adds e2e test for editing a transaction

* Delete test/integration/lib/send-new-ui.js

* Add tests for amount max button and high value error on send screen to test/e2e/metamask-ui.spec.js

* lint and revert to address as object keys

* add chainId based on current network to address book entry

* fix test

* only display contacts for the current network

* Improve ENS message when not found on current network

* Add error to indicate when network does not support ENS

* bump gaba

* address book, resolve comments

* Move contact-list to its own component

* De-duplicate getaddressbook selector and refactor name selection logic in contact-list-tab/

* Use contact-list component in contact-list-tab.component (i.e. in settings)

* Improve/fix settings headers for popup and browser views

* Lint fixes related to address book updates

* Add 'My accounts' page to settings address book

* Update add new contact button in settings to match floating circular design

* Improve styles of view contact page

* Improve styles and labels of the add-contact.component

* Further lint fixes related to address book updates

* Update unit tests as per address book updates

* Ensure that contact list groups are sorted alphabetically

* Refactor settings component to use a container for connection to redux; allow display of addressbook name in settings header

* Decouple ens-input.component from send context

* Add ens resolution to add contact screen in settings

* Switching networks when an ens address is shown on send form removes the ens address.

* Resolve send screen search for ensAddress to matching address book entry if it exists

* Show resolved ens icon and address if exists (settings: add-contact.component)

* Make the displayed and copied address in view-contact.component the checksummed address

* Default alias state prop in AddToAddressBookModal to empty string

* Use keyCode to detect enter key in AddToAddressBookModal

* Ensure add-contact component properly updates after QR code detection

* Fix display of all recents after clicking 'Load More' in contact list

* Fix send screen contact searching after network switching

* Code cleanup related to address book changes

* Update unit tests for address book changes

* Update ENS name not found on network message

* Add ens registration error message

* Cancel on edit mode takes user back to view screen

* Adds support for memo to settings contact list view and edit screens

* Modify designs of edit and view contact in popup environment

* Update settings content list UX to show split columns in fullscreen and proper internal navigation

* Correct background address book API usages in UI
2019-07-31 17:26:44 -02:30
Mark Stacey
1112277cd6
Remove seedWords completely from metamask state (#6920)
`seedWords` used to be stored on the metamask state temporarily at
certain points. This hasn't been the case since #5994, but references
to this state remained. All of the logic remained for correctly updating
these `seedWords`, handling them during navigation, and scrubbing them
from the state.

However the state was never updated in practice. The `seedWords` are
still returned by `verifySeedPhrase`, and they're still stored in
component state in a few places. But they aren't ever set in the Redux
metadata state or the Preferences controller.

All references to this state have been removed, along with any logic
for interacting with this state. A few unused actions were removed as
well.
2019-07-26 10:35:21 -03:00
Mark Stacey
95f198550e
Declare variables before use (#6806)
While working on #6805, I noticed that many variables were being used
before they were declared. Technically this worked fine in practice
because we were using the `transform-es2015-block-scoping` Babel plugin,
which transforms `let` and `const` to `var`, which is hoisted. However,
after removing that Babel transformation, many things broke.

All instances of variables or classes being used before declared have
been fixed.

The `no-use-before-define` eslint rule has been added to catch these
cases going forward. The rule is disabled for function declarations for
the moment, because those are always hoisted. We could disable that too
if we want to, but it's purely stylistic and would require a lot more
changes.
2019-07-05 14:01:34 -03:00
Akshit Kr Nagpal
d16d6f483c Validate txParams in TransactionStateManager.addTx (#6713)
* Normalize and Validate txParams in TransactionStateManager.addTx too

* Added Tests

* Updated normalizeAndValidateParams to return the new txParams
2019-06-29 00:51:51 +02:00
Paul Bouchon
47024fd9a5
feature: integrate gaba/CurrencyRateController (#6570) 2019-05-31 18:14:22 -04:00
Frankie
2b5c7b82a9
transactions/deps - use broken out nonce-tracker module (#6555) 2019-05-21 17:17:09 +02:00
Frankie
a34103987a
drop transactions who's nonce is lower then the known network nonce but were not included in a block (#6388)
* transactions/pending - check nonce against the network and mark as dropped if not included in a block

* transactions/pending - unifiy "dropped" txs

* transactions/pending - test - fix for new expected behavior

* fix comment

* transactions/pending - clean up dropped event

* fix spelling

Co-Authored-By: frankiebee <frankie.diamond@gmail.com>

* nit fix

* test/tx-pending - clarify test description
2019-05-16 07:36:53 +02:00
Paul Bouchon
e57ffbed59
feature: integrate gaba/ShapeShiftController (#6569) 2019-05-14 14:38:55 -04:00
Dan J Miller
b81c4e5c98 Set a default value for code in _determineTransactionCategory (#6604)
* Set a default value for code in _determineTransactionCategory

* Adds e2e tests that fail when token txs without gas param are not properly handled.

* Adds unit tests for _determineTransactionCategory

* Base error throwing and simple gas setting in estimateTxGas on transactionCategory
2019-05-14 14:14:07 -04:00
Thomas Huang
08e8fb21dc
Merge pull request #6568 from MetaMask/feature/gaba-phishing-controller
feature: integrate gaba/PhishingController
2019-05-10 13:43:20 -07:00
Dan J Miller
13be683701
New settings custom rpc form (#6490)
* Add networks tab to settings, with header.

* Adds network list to settings network tab.

* Adds form to settings networks tab and connects it to network list.

* Network tab: form adding and editing working

* Settings network form properly handles input errors

* Add translations for settings network form

* Clean up styles of settings network tab.

* Add popup-view styles and behaviour to settings network tab.

* Fix save button on settings network form

* Adds 'Add Network' button and addMode to settings networks tab

* Lint fix for settings networks tab addition

* Fix navigation in settings networks tab.

* Editing an rpcurl in networks tab does not create new network, just changes rpc of old

* Fix layout of settings tabs other than network

* Networks dropdown 'Custom Rpc' item links to networks tab in settings.

* Update settings sidebar networks subheader.

* Make networks tab buttons width consistent with input widths in extension view.

* Fix settings screen subheader height in popup view

* Fix height of add networks button in popup view

* Add optional label to chainId and symbol form labels in networks setting tab

* Style fixes for networks tab headers

* Add ability to customize block explorer used by custom rpc

* Stylistic improvements+fixes to custom rpc form.

* Hide cancel button.

* Highlight and show network form of provider by default.

* Standardize network subheader name to 'Networks'

* Update e2e tests for new settings network form

* Update unit tests for new rpcPrefs prop

* Extract blockexplorer url construction into method.

* Fix broken styles on non-network tabs in popup mode

* Fix block explorer url links for cases when provider in state has not been updated.

* Fix vertical spacing of network form

* Don't allow click of save button on network form if nothing has changed

* Ensure add network button is shown in popup view

* Lint fix for networks tab

* Fix block explorer url preference setting.

* Fix e2e tests for custom blockexplorer in account details modal changes.

* Update integration test states to include frequentRpcList property

* Fix some capitalizations in en/messages.json

* Remove some console.logs added during custom rpc form work

* Fix external account link text and url for modal and dropdown.

* Documentation, url validation, proptype required additions and lint fixes on network tab and form.
2019-05-09 14:57:14 -02:30
bitpshr
77d3bc252d feature: integrate gaba/PhishingController 2019-05-08 17:56:52 -04:00
Whymarrh Whitby
094e4cf555 Check for unused function arguments (#6583)
* eslint: Check for unused function arguments

* eslint: Ignore unused '_' in argument list

Also allow any number of '_' e.g., '__' or '___' which is to be used sparingly

* Remove and rename unused arguments
2019-05-08 15:51:33 -04:00
Whymarrh Whitby
1de7dc9b41 Remove nock#restore call from actions.spec.js
This call was unmocking all of our HTTP requests, allowing further test cases
to hit the network. Calling nock#restore should not be required.
2019-05-07 13:48:50 -02:30
Paul Bouchon
0db0a187c8 feature: add Goerli support (#6459) 2019-04-17 15:04:49 -02:30
Thomas Huang
a46ec83c9b Remove NoticeController (#6382) 2019-04-01 22:33:54 -02:30
kumavis
ed381f5b2a test - unit - ui - actions - setCompletedOnboarding - fix stub to call callback 2019-03-29 13:10:42 +08:00
kumavis
02585c0bd0 lint fix 2019-03-29 12:51:54 +08:00
kumavis
846038a69c notice-controller - make markAllNoticesRead sync 2019-03-29 12:39:29 +08:00
kumavis
e04f0c877b lib - nodeify - correctly wrap synchronous functions 2019-03-29 12:37:40 +08:00
kumavis
a64855ef49 notices - markAllNoticesRead - use async/await 2019-03-29 12:03:31 +08:00
kumavis
781a39c039 Merge branch 'develop' into clearNotices 2019-03-29 11:54:12 +08:00
Dan J Miller
4ff9126ff2
Replaces the coinbase link in the deposit modal with one for wyre (#6302) 2019-03-22 12:32:07 -02:30
Chi Kei Chan
31175625b4 Folder restructure (#6304)
* Remove ui/app/keychains/

* Remove ui/app/img/ (unused images)

* Move conversion-util to helpers/utils/

* Move token-util to helpers/utils/

* Move /helpers/*.js inside /helpers/utils/

* Move util tests inside /helpers/utils/

* Renameand move confirm-transaction/util.js to helpers/utils/

* Move higher-order-components to helpers/higher-order-components/

* Move infura-conversion.json to helpers/constants/

* Move all utility functions to helpers/utils/

* Move pages directory to top-level

* Move all constants to helpers/constants/

* Move metametrics inside helpers/

* Move app and root inside pages/

* Move routes inside helpers/

* Re-organize ducks/

* Move reducers to ducks/

* Move selectors inside selectors/

* Move test out of test folder

* Move action, reducer, store inside store/

* Move ui components inside ui/

* Move UI components inside ui/

* Move connected components inside components/app/

* Move i18n-helper inside helpers/

* Fix unit tests

* Fix unit test

* Move pages components

* Rename routes component

* Move reducers to ducks/index

* Fix bad path in unit test
2019-03-21 20:33:30 -02:30
Thomas Huang
07c9745258 Remove exclusive test 2019-03-20 21:29:08 -05:00
Thomas Huang
c43374a553 Clear notices when setCompletedOnboarding is called 2019-03-20 20:26:48 -05:00
Paul Bouchon
daae155ce2 GABA: Integrate AddressBookController (#5847)
* gaba: integrate AddressBookController

* pin gaba version and update lockfile
2019-03-11 18:40:41 -10:00
Whymarrh Whitby
3c73781787 Delete old-ui folder 2019-02-20 14:18:46 -03:30
Whymarrh Whitby
c52ba96b85 Remove betaUI preference state, replace with completedUiMigration 2019-02-05 08:49:55 -03:30
Dan J Miller
02bdbbbc3e Add visual indicator when displaying a cached balance (#5854) 2019-01-30 08:46:12 -03:30
Frankie
df3169d1c7
I#5956 fix2 dont overwrite existing rpc settings (#6044)
* mm-controller - dont overwrite existing rpc settings

* ui-networkDropdown - dont pass old network as chainId

* add methods preferencesController.updateRpc and metamaskController.updateAndSetCustomRpc

* use updateAndSetCustomRpc in settings to allow rpcs to be updated

* use new rpc as nickname if no nick name has been supplied

* fix update rpc method
2019-01-29 08:13:51 -10:00
Alexander Tseung
fba17d77de Refactor first time flow, remove seed phrase from state (#5994)
* Refactor and fix styling for first time flow. Remove seed phrase from persisted metamask state

* Fix linting and tests

* Fix translations, initialization notice routing

* Fix drizzle tests

* Fix e2e tests

* Fix integration tests

* Fix styling

* Fix migration naming from 030 to 031

* Open extension in browser when user has not completed onboarding
2019-01-23 11:55:34 -03:30
Frankie
0ad7797076
I#5956 fix 1 (#6026)
* prevent invalid chainId's when adding cusstom rpcs

* migration 30 removes invalid chaids from preferences and networkController for custom rpcs
2019-01-17 09:10:33 -10:00
Frankie
b5d6452454
Disallow loading as metamaskNetworkId (#5924)
* transactions - throw an error if a transaction is generated while the network is loading

* add tests for failing when netId is loading
2018-12-13 09:14:46 -10:00
Dan Miller
20dbebae9f Adds network loading retry / error screen. 2018-12-12 13:53:37 -03:30
Dan Miller
d8e41a6aa5 Final gas customization fixes 2018-12-04 00:06:22 -03:30
Dan Miller
9b9a2cc2e0 Adds createSpeedUpTransaction to txController 2018-12-04 00:06:05 -03:30
Dan J Miller
4c24555545 Save recent network balances in local storage (#5843)
* Use selector for state.metamask.accounts in all cases.

* Default to cached balance when selecting metamask accounts

* Adds the cached-balances controller

* Documentation and small codes fixes for #5843

Co-Authored-By: danjm <danjm.com@gmail.com>
2018-11-30 14:51:24 -08:00
Frankie
8198ec9ae1
Autofill gasPrice for retry attempts with either the recommended gasprice or a %10 bump (#5786)
* transactions - autofill gasPrice for retry attempts with either the recomened gasprice or a %10 bump

* lint
2018-11-26 09:29:14 -10:00
Dan Finlay
5956f8d260 Version 5.0.3 (#5785)
* Version 5.0.3

Includes a fix to the `version:bump` script that now correctly updates
the changelog header.

* Include inpage provider events
2018-11-20 08:34:14 -10:00
Alexander Tseung
4c87c05a02
Fix rounding issue when sending max tokens (#5695)
* Fix rounding issue when sending max tokens

* Ensure amount row shows exact amount of max tokens on send screen (#2)

* Fix tests

* Change stored redux value from BigNumber to hex string. Fix TokenInput default value
2018-11-19 16:06:34 -08:00
Dan Finlay
fdea642e6d
Auto fail transactions that have been approved for over 12 hours (#5765)
* Auto fail transactions that have been approved for over 12 hours

Converts txs using a migration.

This migration uses a new helper function that generates tx-failing
migrations, and only requires a version, error message, and condition to
run on each transaction.

* Linted

* Only migrate approved txs to failed

* Cleanup

* Cleanup

* Small lint fixes
2018-11-16 21:27:01 -08:00
Whymarrh Whitby
1988e1e96b ESLint fixes (#5775)
* eslint . --fix

* Upgrade all ESLint warnings to errors
2018-11-16 14:54:55 -10:00
Frankie
ce147bf6d8 Tx controller now uses safe event emitter (#5769)
* transactions - use safe-event-emitter over events

* tests - pass a platform object on init with a noop showTransactionNotification

* test - fix for tx-state-history-helper trying to reduce an empty array

* deps - safe-event-emitter

* lint
2018-11-16 10:34:08 -08:00
Dan Finlay
22ba0b0c2d Resubmit approved transactions on new block (#5752)
* Add beginning of test

* Resubmit approved transactions on new block

May fix #4343 and related issues, where an error could leave
transactions stranded in the approved state.

* Remove unused test

* Re-approve transactions when retrying approved

* Add retry approved test

* Include approved in pending tx count

* Fix getPendingTxs()

* Linted

* Only throw hash error in submitted state

* Only check submitted txs for block inclusion

* Fix test expectations
2018-11-14 11:34:07 -10:00
Paul Bouchon
0549782595
Update Balanc3 API (#5744)
* Update balanc3 API used in TokenRatesController

* Remove demo URL and use nativeCurrency when fetching token rates
2018-11-13 14:57:43 -05:00
Thomas Huang
0ab5c1c6e2
Merge pull request #5481 from MetaMask/reducers
tests/Reducers
2018-11-06 20:56:15 -08:00
bitpshr
c76c9ca2c8 EIP-1102: updated implementation 2018-11-05 15:07:09 -08:00
Esteban Miño
4489a57f2f Update watchAsset ERC20 validation (#5653)
* update ERC20 token valodation for watchAsset

* update ERC20 validation test descriptions
2018-11-05 15:36:34 -03:30
Thomas
f2fea8043e Remove .only 2018-10-31 07:09:02 -07:00
Thomas
7607794851 Readable tests, and set nextUnreadNotice to null when CLEAR_NOTICES is dispatched 2018-10-31 07:07:25 -07:00
Thomas
7531de14f9 Merge branch 'develop' into reducers 2018-10-31 05:55:25 -07:00
Thomas
611a61b7bc Isolate variables to individual tests 2018-10-31 05:45:27 -07:00
HackyMiner
54a8ade266 Add support for RPC endpoints with custom chain IDs (#5134) 2018-10-26 10:26:43 +02:00
Alexander Tseung
554f79c0e2
Fix blockies icons overriding contract map icons. Refactor Identicon component (#5599) 2018-10-25 17:21:41 +08:00
kumavis
b0c649a4e3
Merge pull request #5555 from MetaMask/support-wallet-watch-asset
Support for prefix wallet_watchAsset
2018-10-21 01:27:08 -04:00
Esteban Miño
7c4f98ffd6 specific add and remove methods for frequentRpcList (#5554) 2018-10-19 17:50:54 -02:30
Esteban MIno
75661673e5 add support for wallet_watchAsset 2018-10-19 13:57:11 -03:00
Alexander Tseung
badebe017f
Adds toggle for primary currency (#5421)
* Add UnitInput component

* Add CurrencyInput component

* Add UserPreferencedCurrencyInput component

* Add UserPreferencedCurrencyDisplay component

* Add updatePreferences action

* Add styles for CurrencyInput, CurrencyDisplay, and UnitInput

* Update SettingsTab page with Primary Currency toggle

* Refactor currency displays and inputs to use UserPreferenced displays and inputs

* Add TokenInput component

* Add UserPreferencedTokenInput component

* Use TokenInput in the send screen

* Fix unit tests

* Fix e2e and integration tests

* Remove send/CurrencyDisplay component

* Replace diamond unicode character with Eth logo. Fix typos
2018-10-17 07:03:29 +08:00
Whymarrh Whitby
af43b7d6c9 Ensure that new transactions added are using the selected address 2018-10-10 16:16:20 -02:30
Thomas Huang
b45479934d test - add actions unit tests (#5369)
* Actions.spec.js

* Error handling tests

* Lint
2018-10-10 10:32:26 -04:00
Thomas
be3f411a60 Reducers 2018-10-10 01:12:46 -07:00
Noel Yoo
ebdefe81a1 Refactor buffer constructor (#5468) 2018-10-09 09:32:48 -02:30
Noel Yoo
012f7ddd72 Fix typos (#5471) 2018-10-09 09:29:51 -02:30
Dan Finlay
c49d854b55 Increase suggested gas percentile to 65 (#5359)
* Increase suggested gas percentile to 65

I keep submitting transactions then waiting a long time. Apparently 50th percentile isn't enough.

* Update test for getGasPrice
2018-10-04 18:38:05 -02:30
Whymarrh Whitby
4dd6c8168f Add ability to whitelist a blacklisted domain at runtime 2018-10-02 10:43:46 -02:30
tmashuang
a0a57c24fd Some Ui tests 2018-09-24 11:28:04 -05:00
bitpshr
36dd0354e7 Implement latest EIP-712 protocol 2018-09-13 15:40:57 -04:00
Whymarrh Whitby
13bc46d824 Default NoticeController ctor opts to empty obj 2018-09-11 12:12:35 -07:00
Whymarrh Whitby
d60991ec88 Delete ConfigManager, replacing its usages with PreferencesController 2018-09-11 09:39:16 -07:00
Esteban MIno
e743f44150 fix conflicts 2018-08-28 15:20:30 -03:00
Esteban MIno
3106374cc3 watchAsset small changes 2018-08-27 22:10:14 -03:00
Esteban MIno
b59a1e91b8 typo watchAsset imageUrl to image 2018-08-23 15:54:40 -03:00
Whymarrh Whitby
e803b8e047 Add test cases for MetaMaskController#_onKeyringControllerUpdate 2018-08-22 15:38:34 -02:30
Esteban MIno
4e6c71e969 Merge branch 'develop' into WatchTokenFeature 2018-08-21 20:14:49 -03:00
Esteban MIno
6ccf2811e7 unit tests for watchAsset 2018-08-21 19:17:57 -03:00
brunobar79
54021fd90b fix unit tests 2018-08-21 00:09:54 -04:00
Bruno Barbieri
bd904c86f6
Merge branch 'develop' into ledger-support 2018-08-17 13:45:46 -04:00
brunobar79
992e7f1b5a fix merge conflicts 2018-08-17 12:56:07 -04:00
Dan Matthews
df799d7fd6 Restores accounts until one with a zero balance is found 2018-08-17 10:26:47 -04:00
brunobar79
fdf202efb0 fixed unit tests 2018-08-14 21:19:01 -04:00
Thomas
ce645561fb Remove commented out code for detect-token-test 2018-08-14 12:29:57 -07:00
Thomas
96d789d2cf Merge branch 'develop' into network-remove-provider-engine
Override package-lock and fix merge conflicts
2018-08-14 10:44:42 -07:00
brunobar79
b77cc3d969 fix tx tests 2018-08-14 03:42:23 -04:00
Esteban MIno
d263d60b4c tests for migration 28 2018-08-09 16:41:16 -04:00
Thomas Huang
5b3927fe5b Lint 2018-07-30 20:30:35 -07:00
Thomas Huang
2392e77cd8 Set metamask controller network provider to localhost 2018-07-30 20:18:01 -07:00
Esteban MIno
fbcba8f019 create tokens storage when setadresses 2018-07-30 19:09:17 -04:00
Thomas
fb5e357998 Detect Tokens are weird 2018-07-30 06:26:34 -07:00
Esteban MIno
dd6a725e6d unit tests for tokens per account and network 2018-07-27 17:41:47 -04:00
Esteban MIno
f79a249bcc modify tests according to tokens by network 2018-07-26 20:04:57 -04:00
Thomas
138858647e Merge branch 'develop' into network-remove-provider-engine 2018-07-25 22:38:44 -07:00
Esteban Miño
110efa9ec1
Merge branch 'develop' into detectTokenFeature 2018-07-20 20:09:37 -04:00
Esteban MIno
9c95554933 fix detection on submit password 2018-07-20 19:58:03 -04:00
Esteban Miño
cb045fd8fe
Auto-detect tokens #3034 (#4683)
* detect tokens polling

* network store to detect token

* tests for spec

* passtest-lint

* fix lint

* improve tests

* detect tokens through infura

* detect tokens when submit password and new account selected

* keyring unlocked detect and unit tests

* add changelog
2018-07-20 12:36:24 -04:00
Esteban MIno
009b1cefbe keyring unlocked detect and unit tests 2018-07-19 19:46:46 -04:00
Esteban MIno
3b97d816ff detect tokens when submit password and new account selected 2018-07-19 15:56:38 -04:00
Bruno Barbieri
9be2248d7a
Merge pull request #4625 from MetaMask/initial-trezor-support
Initial trezor support
2018-07-19 15:00:59 -04:00
Alexander Tseung
e16f5ab54d Fix tests 2018-07-17 13:38:15 -07:00
brunobar79
e89350b19f added tests for removeAccount 2018-07-17 01:44:28 -04:00