anchor.diff:  
       return GestureDetector(
         onPanUpdate: (details) {
  -        if (isEmpty(activity.sessionId) && details.delta.dx < 0) {
  -          Scaffold.of(context).hideCurrentSnackBar();
  -          Scaffold.of(context).showSnackBar(
  -            SnackBar(
  -              backgroundColor: PlexColorPalette.shark,
  -              content: Text('Synced content cannot be terminated.'),
  -            ),
  -          );
  +        if (details.delta.dx < 0) {
  +          if (activity.mediaType == 'photo') {
  +            Scaffold.of(context).hideCurrentSnackBar();
  +            Scaffold.of(context).showSnackBar(
  +              SnackBar(
  +                backgroundColor: PlexColorPalette.shark,
  +                content: Text('Photo streams cannot be terminated.'),
  +              ),
  +            );
  +          } else if (isEmpty(activity.sessionId)) {
  +            Scaffold.of(context).hideCurrentSnackBar();
  +            Scaffold.of(context).showSnackBar(
  +              SnackBar(
  +                backgroundColor: PlexColorPalette.shark,
  +                content: Text('Synced content cannot be terminated.'),
  +              ),
  +            );
  +          }
           }
         },
         onTap: () {
  
positive.code:     builder: (context) {
        return AlertDialog(
          title: Text('Are you sure you want to terminate this stream?'),
          content: TextFormField(
            controller: controller,
            maxLines: 2,
            decoration: InputDecoration(
                helperText: 'Terminate Message',
                hintText: 'The server owner has ended the stream.'),
          ),
          actions: <Widget>[
            FlatButton(
  
negative.code: Future<bool> _showTerminateSessionDialog({
    @required BuildContext context,
    @required TextEditingController controller,
    @required ActivityItem activity,
  }) {
    return showDialog(
      context: context,
  