package com.codemate.booklibrary.ui;

import android.support.annotation.VisibleForTesting;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SearchView;

import com.codemate.booklibrary.data.Book;
import com.codemate.booklibrary.data.Library;
import com.codemate.booklibrary.R;
import com.codemate.booklibrary.data.RandomBookGenerator;

import java.util.List;

public class MainActivity extends AppCompatActivity implements MainView, SearchView.OnQueryTextListener {
    @VisibleForTesting
    MainPresenter presenter;

    private BookAdapter bookAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initializeViews();

        presenter = new MainPresenter(this, new Library(), new RandomBookGenerator());
        presenter.fetchBooks();
    }

    private void initializeViews() {
        bookAdapter = new BookAdapter();

        RecyclerView bookRecycler = (RecyclerView) findViewById(R.id.bookRecycler);
        bookRecycler.setLayoutManager(new LinearLayoutManager(this));
        bookRecycler.setAdapter(bookAdapter);

        SearchView searchView = (SearchView) findViewById(R.id.searchView);
        searchView.setOnQueryTextListener(this);
    }

    @Override
    public boolean onQueryTextSubmit(String query) {
        return false;
    }

    @Override
    public boolean onQueryTextChange(String newText) {
        presenter.searchForBooks(newText);
        return false;
    }

    @Override
    public void showBooks(List<Book> books) {
        bookAdapter.updateItems(books);
    }
}