-
Notifications
You must be signed in to change notification settings - Fork 2.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Force display token instance page #7097
Conversation
f8805cd
to
5676bd1
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Request: GET /api/v2/tokens/0x495f947276749ce646f68ac8c248420045cb7b5e/instances/asd
** (exit) an exception was raised:
** (FunctionClauseError) no function clause matching in BlockScoutWeb.API.V2.FallbackController.call/2
(block_scout_web 5.1.1) lib/block_scout_web/controllers/api/v2/fallback_controller.ex:6: BlockScoutWeb.API.V2.FallbackController.call(%Plug.Conn{adapter: {Plug.Cowboy.Conn, :...}, assigns: %{}, body_params: %{}, cookies: %{"AMP_6afb5a6bce" => "JTdCJTIyb3B0T3V0JTIyJTNBZmFsc2UlMkMlMjJkZXZpY2VJZCUyMiUzQSUyMjRmMTFkYzQzLTBhM2ItNDY3MS1hMjY4LWJiYWZlOTkwZDFiNSUyMiUyQyUyMmxhc3RFdmVudFRpbWUlMjIlM0ExNjcyNjQxODI0NDk2JTJDJTIyc2Vzc2lvbklkJTIyJTNBMTY3MjY0MTgyNDMxOCU3RA==", "AMP_MKTG_6afb5a6bce" => "JTdCJTIycmVmZXJyZXIlMjIlM0ElMjJodHRwJTNBJTJGJTJGbG9jYWxob3N0JTNBNDAwMCUyRmJsb2NrJTJGNzE2MDUlMkZ0cmFuc2FjdGlvbnMlMjIlMkMlMjJyZWZlcnJpbmdfZG9tYWluJTIyJTNBJTIybG9jYWxob3N0JTNBNDAwMCUyMiU3RA==", "_explorer_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYUHdTYmpVZWtNYTBuWjJlYXI1S3RWYUxo.ocYPJu-3xiflKZZ_-XPs_d4HA3kEFAN_d2LazjrwtbI", "_ga" => "GA1.1.197617740.1676378922", "_ga_LHEEE3FJ3R" => "GS1.1.1677309927.2.1.1677309931.0.0.0", "_wobserver" => "8310d1eb27fbada022d6f5153a68c9a31bf0173011acd6e0a28cdf0d55fee2d3", "chakra-ui-color-mode" => "light", "csrftoken" => "gQ6ijcSgpwzxpYRJMWAqJnKFAji8ahGI", "mp_4b03b67c70939e1e9e893e11b280c700_mixpanel" => "%7B%22distinct_id%22%3A%20%221856278afe9595-0aff4b71eb805c-17462c6c-1fa400-1856278afea51e%22%2C%22%24device_id%22%3A%20%221856278afe9595-0aff4b71eb805c-17462c6c-1fa400-1856278afea51e%22%2C%22%24initial_referrer%22%3A%20%22http%3A%2F%2Flocalhost%3A4000%2Fblock%2F32674%2Ftransactions%22%2C%22%24initial_referring_domain%22%3A%20%22localhost%3A4000%22%7D"}, halted: false, host: "localhost", method: "GET", owner: #PID<0.2408.0>, params: %{"address_hash" => "0x495f947276749ce646f68ac8c248420045cb7b5e", "token_id" => "asd"}, path_info: ["v2", "tokens", "0x495f947276749ce646f68ac8c248420045cb7b5e", "instances", "asd"], path_params: %{"address_hash" => "0x495f947276749ce646f68ac8c248420045cb7b5e", "token_id" => "asd"}, port: 4000, private: %{BlockScoutWeb.ApiRouter => {["api"], %{BlockScoutWeb.API.RPC.RPCTranslator => [], BlockScoutWeb.SmartContractsApiV2Router => ["v2", "smart-contracts"], RPCTranslatorForwarder => []}}, BlockScoutWeb.Router => {[], %{Absinthe.Plug => ["graphql"], Absinthe.Plug.GraphiQL => ["graphiql"], BlockScoutWeb.ApiRouter => ["api"], BlockScoutWeb.WebRouter => []}}, :before_send => [#Function<0.67058429/1 in BlockScoutWeb.Plug.Logger.call/2>, #Function<0.20795500/1 in Plug.CSRFProtection.call/2>, #Function<0.84243074/1 in Plug.Session.before_send/2>, #Function<1.71982575/1 in Phoenix.LiveReloader.before_send_inject_reloader/3>, #Function<2.129814873/1 in BlockScoutWeb.Endpoint.call/2>], :phoenix_action => :instance, :phoenix_controller => BlockScoutWeb.API.V2.TokenController, :phoenix_endpoint => BlockScoutWeb.Endpoint, :phoenix_format => "json", :phoenix_layout => {BlockScoutWeb.LayoutView, :app}, :phoenix_router => BlockScoutWeb.ApiRouter, :phoenix_view => BlockScoutWeb.API.V2.TokenView, :plug_session => %{}, :plug_session_fetch => :done}, query_params: %{}, query_string: "", remote_ip: {127, 0, 0, 1}, req_cookies: %{"AMP_6afb5a6bce" => "JTdCJTIyb3B0T3V0JTIyJTNBZmFsc2UlMkMlMjJkZXZpY2VJZCUyMiUzQSUyMjRmMTFkYzQzLTBhM2ItNDY3MS1hMjY4LWJiYWZlOTkwZDFiNSUyMiUyQyUyMmxhc3RFdmVudFRpbWUlMjIlM0ExNjcyNjQxODI0NDk2JTJDJTIyc2Vzc2lvbklkJTIyJTNBMTY3MjY0MTgyNDMxOCU3RA==", "AMP_MKTG_6afb5a6bce" => "JTdCJTIycmVmZXJyZXIlMjIlM0ElMjJodHRwJTNBJTJGJTJGbG9jYWxob3N0JTNBNDAwMCUyRmJsb2NrJTJGNzE2MDUlMkZ0cmFuc2FjdGlvbnMlMjIlMkMlMjJyZWZlcnJpbmdfZG9tYWluJTIyJTNBJTIybG9jYWxob3N0JTNBNDAwMCUyMiU3RA==", "_explorer_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYUHdTYmpVZWtNYTBuWjJlYXI1S3RWYUxo.ocYPJu-3xiflKZZ_-XPs_d4HA3kEFAN_d2LazjrwtbI", "_ga" => "GA1.1.197617740.1676378922", "_ga_LHEEE3FJ3R" => "GS1.1.1677309927.2.1.1677309931.0.0.0", "_wobserver" => "8310d1eb27fbada022d6f5153a68c9a31bf0173011acd6e0a28cdf0d55fee2d3", "chakra-ui-color-mode" => "light", "csrftoken" => "gQ6ijcSgpwzxpYRJMWAqJnKFAji8ahGI", "mp_4b03b67c70939e1e9e893e11b280c700_mixpanel" => "%7B%22distinct_id%22%3A%20%221856278afe9595-0aff4b71eb805c-17462c6c-1fa400-1856278afea51e%22%2C%22%24device_id%22%3A%20%221856278afe9595-0aff4b71eb805c-17462c6c-1fa400-1856278afea51e%22%2C%22%24initial_referrer%22%3A%20%22http%3A%2F%2Flocalhost%3A4000%2Fblock%2F32674%2Ftransactions%22%2C%22%24initial_referring_domain%22%3A%20%22localhost%3A4000%22%7D"}, req_headers: [{"accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"}, {"accept-encoding", "gzip, deflate, br"}, {"accept-language", "en-US,en;q=0.9,ru;q=0.8"}, {"connection", "keep-alive"}, {"cookie", "AMP_MKTG_6afb5a6bce=JTdCJTIycmVmZXJyZXIlMjIlM0ElMjJodHRwJTNBJTJGJTJGbG9jYWxob3N0JTNBNDAwMCUyRmJsb2NrJTJGNzE2MDUlMkZ0cmFuc2FjdGlvbnMlMjIlMkMlMjJyZWZlcnJpbmdfZG9tYWluJTIyJTNBJTIybG9jYWxob3N0JTNBNDAwMCUyMiU3RA==; AMP_6afb5a6bce=JTdCJTIyb3B0T3V0JTIyJTNBZmFsc2UlMkMlMjJkZXZpY2VJZCUyMiUzQSUyMjRmMTFkYzQzLTBhM2ItNDY3MS1hMjY4LWJiYWZlOTkwZDFiNSUyMiUyQyUyMmxhc3RFdmVudFRpbWUlMjIlM0ExNjcyNjQxODI0NDk2JTJDJTIyc2Vzc2lvbklkJTIyJTNBMTY3MjY0MTgyNDMxOCU3RA==; mp_4b03b67c70939e1e9e893e11b280c700_mixpanel=%7B%22distinct_id%22%3A%20%221856278afe9595-0aff4b71eb805c-17462c6c-1fa400-1856278afea51e%22%2C%22%24device_id%22%3A%20%221856278afe9595-0aff4b71eb805c-17462c6c-1fa400-1856278afea51e%22%2C%22%24initial_referrer%22%3A%20%22http%3A%2F%2Flocalhost%3A4000%2Fblock%2F32674%2Ftransactions%22%2C%22%24initial_referring_domain%22%3A%20%22localhost%3A4000%22%7D; chakra-ui-color-mode=light; _explorer_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYUHdTYmpVZWtNYTBuWjJlYXI1S3RWYUxo.ocYPJu-3xiflKZZ_-XPs_d4HA3kEFAN_d2LazjrwtbI; _wobserver=8310d1eb27fbada022d6f5153a68c9a31bf0173011acd6e0a28cdf0d55fee2d3; csrftoken=gQ6ijcSgpwzxpYRJMWAqJnKFAji8ahGI; _ga=GA1.1.197617740.1676378922; _ga_LHEEE3FJ3R=GS1.1.1677309927.2.1.1677309931.0.0.0"}, {"host", "localhost:4000"}, {"sec-ch-ua", "\"Google Chrome\";v=\"113\", \"Chromium\";v=\"113\", \"Not-A.Brand\";v=\"24\""}, {"sec-ch-ua-mobile", "?0"}, {"sec-ch-ua-platform", "\"Linux\""}, {"sec-fetch-dest", "document"}, {"sec-fetch-mode", "navigate"}, {"sec-fetch-site", "none"}, {"sec-fetch-user", "?1"}, {"upgrade-insecure-requests", "1"}, {"user-agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"}], request_path: "/api/v2/tokens/0x495f947276749ce646f68ac8c248420045cb7b5e/instances/asd", resp_body: nil, resp_cookies: %{}, resp_headers: [{"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "F04cPG5dU3JgVBwAAAIG"}, {"access-control-allow-credentials", "true"}, {"access-control-allow-origin", "*"}, {"access-control-expose-headers", ""}], scheme: :http, script_name: ["api"], secret_key_base: :..., state: :unset, status: nil}, :error)
(block_scout_web 5.1.1) lib/block_scout_web/controllers/api/v2/token_controller.ex:1: BlockScoutWeb.API.V2.TokenController.action/2
(block_scout_web 5.1.1) lib/block_scout_web/controllers/api/v2/token_controller.ex:1: BlockScoutWeb.API.V2.TokenController.phoenix_controller_pipeline/2
(phoenix 1.5.13) lib/phoenix/router.ex:352: Phoenix.Router.__call__/2
(phoenix 1.5.13) lib/phoenix/router/route.ex:41: Phoenix.Router.Route.call/2
(phoenix 1.5.13) lib/phoenix/router.ex:352: Phoenix.Router.__call__/2
(block_scout_web 5.1.1) lib/block_scout_web/endpoint.ex:1: BlockScoutWeb.Endpoint.plug_builder_call/2
(block_scout_web 5.1.1) lib/plug/debugger.ex:136: BlockScoutWeb.Endpoint."call (overridable 3)"/2
(block_scout_web 5.1.1) lib/block_scout_web/endpoint.ex:1: BlockScoutWeb.Endpoint."call (overridable 4)"/2
(block_scout_web 5.1.1) lib/spandex_phoenix.ex:151: BlockScoutWeb.Endpoint.call/2
(phoenix 1.5.13) lib/phoenix/endpoint/ (truncated)
I suppose we need to distinguish with clause here
blockscout/apps/block_scout_web/lib/block_scout_web/controllers/api/v2/token_controller.ex
Line 134 in 5676bd1
{token_id, ""} <- Integer.parse(token_id_str), |
like
{:format, {token_id, ""}} <- {:format, Integer.parse(token_id_str)},
and then non integer strings will be handled by blockscout/apps/block_scout_web/lib/block_scout_web/controllers/api/v2/fallback_controller.ex
Line 6 in 5676bd1
def call(conn, {:format, _}) do |
apps/block_scout_web/lib/block_scout_web/controllers/tokens/instance_controller.ex
Outdated
Show resolved
Hide resolved
apps/block_scout_web/lib/block_scout_web/controllers/tokens/instance/transfer_controller.ex
Outdated
Show resolved
Hide resolved
apps/block_scout_web/lib/block_scout_web/controllers/api/v2/token_controller.ex
Outdated
Show resolved
Hide resolved
Processed in 901519b |
26934ae
to
bcb92bb
Compare
bcb92bb
to
934c01f
Compare
apps/block_scout_web/lib/block_scout_web/controllers/tokens/instance/helper.ex
Outdated
Show resolved
Hide resolved
934c01f
to
cc7bc03
Compare
Motivation
#7024 (comment)
Changelog
Display token instance page even if token instance is not yet saved into the DB.
Checklist for your Pull Request (PR)
CHANGELOG.md
with this PRmaster
in the Version column. Changes will be reflected in this table: https://docs.blockscout.com/for-developers/information-and-settings/env-variables.