blob: 707616a28e6a847902e4b1dc07352702940302c0 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.esme.comet
import net.liftweb.common._
import net.liftweb.mapper._
import net.liftweb.http._
import net.liftweb.util.Helpers.TimeSpan
import org.apache.esme._
import actor.{Distributor,UserActor,ConvDistributor}
import model._
class ConversationTimeline extends Timeline {
val jsId = "conversation_timeline_messages"
var convId:Long = S.param("cid").map(_.toLong).openOr(-1L)
var convMess:Message = Message.findMessages(List(convId)).values.toList.head
override def localSetup() {
super.localSetup()
Distributor ! Distributor.ListenObject(convMess, this)
messages = Message.findAndPrime(By(Message.conversation, convId),
OrderBy(Message.id, Descending)).map( m =>
(m.id.is, NoReason, true)).take(40)
}
override def localShutdown() {
super.localShutdown()
Distributor ! Distributor.UnlistenObject(convMess, this)
}
override def lifespan = Full(TimeSpan(300000))
override def lowPriority = {
case ConvDistributor.MessageReceived(msg, r) =>
messages = ((msg.id.is,r,true) :: messages).take(40)
reRender(false)
}
}