### 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/>
###

{ DiffsView } = require '../view/diffs'
{ Diffs } = require '../collection/diff'

class DiffController

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

    initialize: () =>

    create: (i, el) =>
        diffs = new Diffs
        @views.push view = new DiffsView el:$(el), model:diffs
        _.extend view,
            owner: expose.owner
            project: expose.project
            sha: expose.sha
        @listen diffs, view
        @fetch view

    fetch: ({ owner, project, sha }) =>
        @client.api.emit 'diffs', { owner, project, sha }

    listen: (diffs, view) =>
        @client.api.on 'diff', (diff) =>
            view.trigger 'hide:progressbar'
            diffs.add diff

module.exports = { DiffController }

