### codetube
    Copyright (C) 2011 payload payload@lavabit.com
    Copyright (C) 2011 dodo dodo.the.last@gmail.com

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>
###

{ CommitsView } = require '../view/commits'
{ Commits } = require '../collection/commit'


class CommitsController

    constructor: (@client) ->
        @views = []

    initialize: () =>

    create: (i, table) =>
        commits = new Commits
        @views.push view = new CommitsView el:$(table), model:commits
        _.extend view,
            n      : expose.commits.n
            skip   : 0
            owner  : expose.owner
            project: expose.project
        view.bind 'more-commits', =>
            view.skip = commits.length
            @fetch view
        @listen commits, view
        @fetch view

    fetch: ({ skip, n, owner, project }) =>
        @client.api.emit 'commits', { skip, n, owner, project }

    listen: (commits, view) =>
        @client.api.on 'commit', (commit) => # FIXME which project?!
            view.trigger 'hide:progressbar'
            commits.add commit
            @client.users.fetch commit.author

module.exports = { CommitsController }

