I want to update one of my selectInputs, "variable" with a reactive list of countries that will change depending on the dataset that is selected in another selectInput, "Databases". I want the default list of choices to be the "Home File" dataset that is loaded when the app runs but I want to have the option of switching to an uploaded file. The files I plan to upload will all have the list of countries under the "Countries" column to match the home_df column. Ideally the list will refresh anytime the dataset is switched.
So far I have tried this but cant seem to return the values I want:
Values <- c(145540,145560, 157247, 145566)
Countries <- c(US, Canada, Ireland, Spain)
Zipcodes <- c(145592, 145560, 145566, NA)
home_df <- data.frame(Values , Countries , Zipcodes )
ui <- fluidPage(
 tabPanel(
    "first_plot",
    tabsetPanel(
      id = "firstPanel",
      type = "tabs",
      tabPanel("File Upload",
               # Sidebar layout with input and output definitions ----
               sidebarLayout(
                 # Sidebar panel for inputs ----
                 sidebarPanel(
                   # Input: Select a file ----
                   fileInput(
                     "file1",
                     "Choose CSV File",
                     multiple = FALSE,
                     accept = c("text/csv",
                                "text/comma-separated-values,text/plain",
                                ".csv")
                   ),
                   
                   # Horizontal line ----
                   tags$hr(),
                   
                   # Input: Checkbox if file has header ----
                   checkboxInput("header", "Header", TRUE),
                   
                   # Input: Select separator ----
                   radioButtons(
                     "sep",
                     "Separator",
                     choices = c(
                       Comma = ",",
                       Semicolon = ";",
                       Tab = "\t"
                     ),
                     selected = ","
                   ),
                   
                   # Input: Select quotes ----
                   radioButtons(
                     "quote",
                     "Quote",
                     choices = c(
                       None = "",
                       "Double Quote" = '"',
                       "Single Quote" = "'"
                     ),
                     selected = '"'
                   ),
                   
                   # Horizontal line ----
                   tags$hr(),
                   
                   # Input: Select number of rows to display ----
                   radioButtons(
                     "disp",
                     "Display",
                     choices = c(Head = "head",
                                 All = "all"),
                     selected = "head"
                   )
                   
                 ),
                 mainPanel(# Output: Data file ----
                           tableOutput("contents"))
               )),
 tabPanel("first_plot",
               uiOutput("box"))
server <- function(input, output, session) {
  my_data <- reactive({
    inFile <- input$file1
    req(inFile)
    
    # when reading semicolon separated files,
    # having a comma separator causes `read.csv` to error
    tryCatch({
      df_x <<- read.csv(
        inFile$datapath,
        header = input$header,
        sep = input$sep,
        quote = input$quote
      )
      
    },
    error = function(e) {
      # return a safeError if a parsing error occurs
      stop(safeError(e))
    })
    
    if (input$disp == "head") {
      return(head(df_x))
    }
    else {
      return(df_x)
    }
  })
}
   datasetInput <- reactiveValues(
    if (input$exp_pr_box == "Home File"){
      dataset <- home_df
    }
    else if (input$exp_pr_box == "Uploaded DB"){
      dataset <- my_data()
    }
    return(dataset)
  )
  
md <- reactiveValues(
    list = datasetInput$Countries
  )
  observeEvent(datasetInput(),
                  updateSelectInput(session, "variable", choices=md()))
  
  
  output$box <- renderUI({
    tabPanel(
      "first_plot",
      sidebarPanel(
        selectInput(
          "exp_pr_box",
          "Database",
          choices = c("Home File", "Uploaded DB")
        ),  ----
        selectInput("variable", "Selection:", choices=NULL, selected = NULL
        )
       )
      ),
      mainPanel(
        h3("plot title", align = "center"),
        plotlyOutput("plot", height = '1000px', width = "100%")
     )
    )
  })
  
  output$contents <- renderTable({
    my_data()
  })
  
  output$plot <-  renderPlotly(
        ggplot(dx) +
          geom_boxplot(col = c("#69b3a2", "red")) +
          geom_line(data = dx, aes(group = paired), color =
                      "grey"))
shinyApp(ui, server)